2012-01-12 10 views
6

क्या हम Android Mock का उपयोग करके एंड्रॉइड एप्लिकेशन के लिए निजी फ़ंक्शंस और फ़ील्ड का यूनिट परीक्षण कर सकते हैं?एंड्रॉइड में यूनिट टेस्ट निजी फ़ंक्शन

यदि हां, तो कृपया समझाएं कि कैसे?

उत्तर

6

यूनिट एक निजी विधि का परीक्षण करता है, बस मुझे थोड़ा गलत लगता है। सार्वजनिक और संरक्षित तरीके इकाई परीक्षण के लिए उम्मीदवार हैं। निजी तरीकों का परीक्षण करने के लिए, आप विधि को सार्वजनिक कर सकते हैं या सार्वजनिक तरीकों के अधिक परीक्षण कर सकते हैं जो निजी विधि को कॉल करते हैं, और निजी विधि की मुख्य कार्यक्षमता का परीक्षण करते हैं।

+1

मैं rfsk2010 से सहमत हूं। यदि आपको लगता है कि सार्वजनिक विधि के माध्यम से सब कुछ जांचने के लिए यह बहुत अधिक काम है, तो यह एक कोड गंध हो सकती है कि आपकी कक्षा बहुत बड़ी है और इसमें बहुत सारी नौकरियां हैं। उस बिंदु पर आप कक्षाओं में अपने कोड को तोड़ने में देख सकते हैं जिसमें एक ही जिम्मेदारी है। अक्सर आप इन कक्षाओं को पुन: प्रयोज्य और अलगाव इकाई परीक्षण के लिए बहुत आसान पाएंगे। – Scott

+0

@downvoter। कृपया अपने डाउनवोट – rfsk2010

+1

के कारण की व्याख्या करें आंतरिक तरीकों का परीक्षण करने में सक्षम होना अच्छा है। यद्यपि अनुबंध द्वारा प्रोग्रामिंग आपके अधिकार को बनाती है, प्रोग्रामिंग विभाजन और कन्कर पर भी आधारित है और कोई कारण नहीं है कि कोई निजी या संरक्षित विधि का परीक्षण न करें। मैंने जो कारण दिया है, उतना ही सीमित है और डेवलपर्स द्वारा व्यक्त की गई सभी जरूरतों को पूरा नहीं करता है। – Snicolas

1

हाय ने blog article about this topic पोस्ट किया और दिखाया कि आप जावा पैकेज और एंड्रॉइडमैनीफेस्ट "पैकेज" के बीच अंतर को समझकर आंतरिक तरीकों का परीक्षण करने के लिए कैसे प्राप्त कर सकते हैं।

आप एक ही चाल का उपयोग कर खत्म हो जाएगा के रूप में हम जावा में पारंपरिक रूप से कार्य करें: तरीकों की रक्षा की जानी परीक्षण किया जाना करते हैं।

मुझे उम्मीद है कि इससे मदद मिलती है!

2

एक वर्ष के बाद, मैं भी एक पुस्तकालय निजी तरीकों और क्षेत्रों का परीक्षण करने में मदद करने धक्का दे दिया। मेरा मानना ​​है कि एंड्रॉइड पर अभी भी निजी तरीकों का परीक्षण करने की आवश्यकता है।

आप अन्य गतिविधियों को रोकने के लिए अपनी गतिविधियों के तरीकों को निजी बनाना चाहते हैं ताकि वे इसे एक्सेस कर सकें (टुकड़ा कर सकता है, लेकिन यह मेरे लिए गलत अभ्यास है, यह एक अवलोकन-पर्यवेक्षक पैटर्न का उपयोग करना बेहतर है)। फिर आप निजी क्षेत्रों और विधियों के साथ समाप्त हो जाएंगे जिन्हें केवल परीक्षणों तक पहुंचाया जाना चाहिए।

BoundBox ठीक करता है! यहाँ नीचे एक परीक्षण एक गतिविधि की 2 निजी क्षेत्रों में यह परीक्षण करने के लिए तक पहुँचता है कि का एक उदाहरण है:

@UiThreadTest 
public void testCompute() { 
    // given 
    boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity()); 

    // when 
    boundBoxOfMainActivity.boundBox_getButtonMain().performClick(); 

    // then 
    assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText()); 
} 
+0

धन्यवाद स्निकोलस, मैं बाउंडबॉक्स – Sachchidanand

2

बेस्ट और उचित कानूनी रास्ता परीक्षण ढांचे से निजी विधि का परीक्षण करने के पद्धति पर एनोटेशन @VisibleForTesting है तो सार्वजनिक विधि की तरह परीक्षण ढांचे के लिए एक ही विधि दिखाई देगी। यहां Official link for VisibleForTesting annotation

+0

पर एक नज़र डालेंगे यह एक क्लीनर जैसा दिखता है दृष्टिकोण, परीक्षण की सीमा के लिए वास्तविक प्रणाली को नहीं बदल रहा है। कोशिश नहीं की, लेकिन आश्चर्य है कि कई अन्य लोगों ने यह जवाब क्यों नहीं दिया – rgv

+0

निजी तरीकों का परीक्षण करने का क्लीनर तरीका लगता है। कोशिश करो धन्यवाद :) – Sachchidanand

संबंधित मुद्दे