2015-09-18 9 views
5

के लिए विफल रहा है मेरा यूनिट परीक्षण android.util.Log में विधि डी के साथ विफल रहा है, लेकिन जब मैं testDebug चलाता हूं। यदि परीक्षण चल रहा है कृपया सभी ठीक है और वे सही ढंग से पास हो जाते हैं। क्या कोई जानता है कि यह क्यों हो रहा है? वही बात होती है जब कंसोल और एंड्रॉइड स्टूडियो से ग्रेडिंग चलती है।एंड्रॉइड यूनिट टेस्ट डीबग बिल्ड प्रकार

उत्तर

1

यहां एक स्पष्टीकरण है कि मैंने भविष्य के संदर्भ के लिए इसे कैसे हल किया। डीबग में काम कर रहे परीक्षणों के साथ समस्या लेकिन रिलीज नहीं होने के कारण एक तथ्य यह था कि Log.d (और एंड्रॉइड फ्रेमवर्क से मित्र) सही ढंग से मजाक नहीं किए गए थे। रिलीज के रूप में निर्मित होने पर काम करने का कारण यह है कि हमारी लॉगिंग इस प्रॉपर्टी पर बिल्ड कॉन्फ़िगरेशन से सशर्त थी। असल में हमारे पास है (BuildConfig.type! = "रिलीज") Log.d (...) और चूंकि संकलक अंतिम मान के कारण इस ब्लॉक को हटा देता है, इसे रिलीज़ होने पर कॉल नहीं किया जाता है। स्थैतिक विधि लॉग करने के लिए Log.d मैंने PowerMock का उपयोग किया। मॉकिंग आसान थी लेकिन पावर मॉक सेट करना वास्तव में एक परेशानी है इसलिए शायद इसे करने के लिए बेहतर तरीके हो सकते हैं।

0

चेकआउट "Method ... not mocked" एंड्रॉइड स्टूडियो प्रोजेक्ट साइट पर लिंक। इसे कहते हैं:

कि इकाई परीक्षण चलाने के लिए किसी भी वास्तविक कोड नहीं है प्रयोग किया जाता है android.jar फ़ाइल - कि असली उपकरणों पर एंड्रॉयड सिस्टम छवि द्वारा प्रदान की जाती है। इसके बजाए, सभी विधियां अपवाद फेंकती हैं (डिफ़ॉल्ट रूप से)। यह सुनिश्चित करना है कि आपके यूनिट परीक्षण केवल आपके कोड का परीक्षण करें और एंड्रॉइड प्लेटफ़ॉर्म के किसी भी विशेष व्यवहार पर निर्भर न हों (जिसे आपने स्पष्ट रूप से मॉकिटो का उपयोग करके मजाक नहीं किया है)। कि समस्याग्रस्त साबित होता है, तो आप अपने build.gradle के लिए नीचे टुकड़ा जोड़ सकते हैं इस व्यवहार को बदलने के लिए:

build.gradle 
    android { 
    // ... 
    testOptions { 
     unitTests.returnDefaultValues ​​= true 
    } 
} 

हम जानते हैं कि डिफ़ॉल्ट व्यवहार जब प्रवेश करें या TextUtils और इच्छा की तरह वर्गों का उपयोग कर रहे हैं समस्याग्रस्त है भावी रिलीज में संभावित समाधान का मूल्यांकन करें।

मैंने अभी उपरोक्त का उपयोग अपवाद से छुटकारा पाने के लिए किया था।

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