क्या हम Android Mock का उपयोग करके एंड्रॉइड एप्लिकेशन के लिए निजी फ़ंक्शंस और फ़ील्ड का यूनिट परीक्षण कर सकते हैं?एंड्रॉइड में यूनिट टेस्ट निजी फ़ंक्शन
यदि हां, तो कृपया समझाएं कि कैसे?
क्या हम Android Mock का उपयोग करके एंड्रॉइड एप्लिकेशन के लिए निजी फ़ंक्शंस और फ़ील्ड का यूनिट परीक्षण कर सकते हैं?एंड्रॉइड में यूनिट टेस्ट निजी फ़ंक्शन
यदि हां, तो कृपया समझाएं कि कैसे?
यूनिट एक निजी विधि का परीक्षण करता है, बस मुझे थोड़ा गलत लगता है। सार्वजनिक और संरक्षित तरीके इकाई परीक्षण के लिए उम्मीदवार हैं। निजी तरीकों का परीक्षण करने के लिए, आप विधि को सार्वजनिक कर सकते हैं या सार्वजनिक तरीकों के अधिक परीक्षण कर सकते हैं जो निजी विधि को कॉल करते हैं, और निजी विधि की मुख्य कार्यक्षमता का परीक्षण करते हैं।
हाय ने blog article about this topic पोस्ट किया और दिखाया कि आप जावा पैकेज और एंड्रॉइडमैनीफेस्ट "पैकेज" के बीच अंतर को समझकर आंतरिक तरीकों का परीक्षण करने के लिए कैसे प्राप्त कर सकते हैं।
आप एक ही चाल का उपयोग कर खत्म हो जाएगा के रूप में हम जावा में पारंपरिक रूप से कार्य करें: तरीकों की रक्षा की जानी परीक्षण किया जाना करते हैं।
मुझे उम्मीद है कि इससे मदद मिलती है!
एक वर्ष के बाद, मैं भी एक पुस्तकालय निजी तरीकों और क्षेत्रों का परीक्षण करने में मदद करने धक्का दे दिया। मेरा मानना है कि एंड्रॉइड पर अभी भी निजी तरीकों का परीक्षण करने की आवश्यकता है।
आप अन्य गतिविधियों को रोकने के लिए अपनी गतिविधियों के तरीकों को निजी बनाना चाहते हैं ताकि वे इसे एक्सेस कर सकें (टुकड़ा कर सकता है, लेकिन यह मेरे लिए गलत अभ्यास है, यह एक अवलोकन-पर्यवेक्षक पैटर्न का उपयोग करना बेहतर है)। फिर आप निजी क्षेत्रों और विधियों के साथ समाप्त हो जाएंगे जिन्हें केवल परीक्षणों तक पहुंचाया जाना चाहिए।
BoundBox ठीक करता है! यहाँ नीचे एक परीक्षण एक गतिविधि की 2 निजी क्षेत्रों में यह परीक्षण करने के लिए तक पहुँचता है कि का एक उदाहरण है:
@UiThreadTest
public void testCompute() {
// given
boundBoxOfMainActivity = new BoundBoxOfMainActivity(getActivity());
// when
boundBoxOfMainActivity.boundBox_getButtonMain().performClick();
// then
assertEquals("42", boundBoxOfMainActivity.boundBox_getTextViewMain().getText());
}
धन्यवाद स्निकोलस, मैं बाउंडबॉक्स – Sachchidanand
बेस्ट और उचित कानूनी रास्ता परीक्षण ढांचे से निजी विधि का परीक्षण करने के पद्धति पर एनोटेशन @VisibleForTesting है तो सार्वजनिक विधि की तरह परीक्षण ढांचे के लिए एक ही विधि दिखाई देगी। यहां Official link for VisibleForTesting annotation
पर एक नज़र डालेंगे यह एक क्लीनर जैसा दिखता है दृष्टिकोण, परीक्षण की सीमा के लिए वास्तविक प्रणाली को नहीं बदल रहा है। कोशिश नहीं की, लेकिन आश्चर्य है कि कई अन्य लोगों ने यह जवाब क्यों नहीं दिया – rgv
निजी तरीकों का परीक्षण करने का क्लीनर तरीका लगता है। कोशिश करो धन्यवाद :) – Sachchidanand
मैं rfsk2010 से सहमत हूं। यदि आपको लगता है कि सार्वजनिक विधि के माध्यम से सब कुछ जांचने के लिए यह बहुत अधिक काम है, तो यह एक कोड गंध हो सकती है कि आपकी कक्षा बहुत बड़ी है और इसमें बहुत सारी नौकरियां हैं। उस बिंदु पर आप कक्षाओं में अपने कोड को तोड़ने में देख सकते हैं जिसमें एक ही जिम्मेदारी है। अक्सर आप इन कक्षाओं को पुन: प्रयोज्य और अलगाव इकाई परीक्षण के लिए बहुत आसान पाएंगे। – Scott
@downvoter। कृपया अपने डाउनवोट – rfsk2010
के कारण की व्याख्या करें आंतरिक तरीकों का परीक्षण करने में सक्षम होना अच्छा है। यद्यपि अनुबंध द्वारा प्रोग्रामिंग आपके अधिकार को बनाती है, प्रोग्रामिंग विभाजन और कन्कर पर भी आधारित है और कोई कारण नहीं है कि कोई निजी या संरक्षित विधि का परीक्षण न करें। मैंने जो कारण दिया है, उतना ही सीमित है और डेवलपर्स द्वारा व्यक्त की गई सभी जरूरतों को पूरा नहीं करता है। – Snicolas