2013-12-17 13 views
5

मैं एक इकाई परीक्षण कि बस testcase फैली लिखे से असफल रिपोर्टिंग नहीं और मैं निम्नलिखित है:एंड्रॉयड यूनिट टेस्ट विफल()

public class MetricParserTests extends TestCase { 

    @Override 
    protected void setUp() throws Exception { 
     super.setUp(); 
    } 

    @Override 
    protected void tearDown() throws Exception { 
     super.tearDown(); 
    } 

    public void testFailure() { 
     fail("This needs to fail"); 
    } 
} 

जब मैं ant test या adb shell am instrument उपयोग करते हुए मेरे परीक्षण चला मैं निम्नलिखित मिल परिणाम:

... [कार्यकारी] ठीक है (1 परीक्षण) ...

मैं कमांड लाइन पर एक विफलता को देखने के लिए उम्मीद थी।

+0

मुझे एक ही समस्या है। जब मैं रेखा से लाइन चलाता हूं, तो मैं AssertionFailedError फेंक सकता हूं, लेकिन ग्रहण, चींटी और logcat सभी रिपोर्ट परीक्षण पास हो गया है? –

+0

मुझे लगता है कि आपको अपना प्रश्न पूछना चाहिए @ChrisNoldus –

+0

क्यों इसे डुप्लिकेट करें? यह बहुत संभावना है कि हमारे पास एक ही समस्या है। –

उत्तर

1

मुझे विश्वास है कि मुझे पता है कि समस्या क्या है। मैं इस मुद्दे को पुन: पेश करने और इसे हल करने में सक्षम था। आप जिस आदेश का उपयोग करते हैं आपके परीक्षण प्रोजेक्ट को डिवाइस पर पुनर्निर्माण और पुनः स्थापित नहीं करता है। जब आप ant test पर कॉल करते हैं तो यह केवल उन डिवाइसों को निष्पादित करेगा जो पहले से ही उस डिवाइस पर स्थापित हैं।

क्या आप कॉल करने की आवश्यकता अपने परीक्षण परियोजना की निर्देशिका में तीन आदेशों है:

ant debug 
ant installd 
ant test 

तो सभी परीक्षणों के पुनर्निर्माण और फिर से स्थापित हैं और नवीनतम परीक्षण निष्पादित किया जाएगा किया जाएगा। यदि आप debug और installd पर कॉल नहीं करते हैं, तो परीक्षणों में किए गए परिवर्तन लागू नहीं होते हैं।

+0

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

+1

@ChrisNoldus विवरण में आपकी समस्या का वर्णन करने वाला एक नया प्रश्न खोलने के लिए स्वतंत्र महसूस करता है और समुदाय आपकी मदद करने की कोशिश करेगा। –

-1

विधि परीक्षण विफलता() में @Test एनोटेशन नहीं है। क्या वो सही है?

+1

नहीं, एंड्रॉइड JUnit3 का उपयोग करता है, इसलिए कोई टिप्पणी नहीं। – Gregg

0

मैं एंड्रॉयड परीक्षण में हाल ही में कोई अनुभव नहीं है, लेकिन यहाँ मैं क्या पाया है है ...

आप सामान्य JUnit परीक्षण का उपयोग कर सकते हैं यदि आपके कोड पूरी तरह एंड्रॉयड से decoupled है (here देखने के एक उदाहरण के लिए)। यह जुनीट धावक का उपयोग कर पर आपके JVM पर चलाएगा।

हालांकि, यदि आप इन परीक्षणों को एंड्रॉइड डिवाइस (या तो चींटी के माध्यम से या कमांड लाइन टूल्स) पर चलाने की कोशिश कर रहे हैं तो आपको एक पूर्ण एंड्रॉइड टेस्ट प्रोजेक्ट बनाना होगा (here देखें)। "डिवाइस पर" परीक्षण करने के लिए आपके परीक्षण मामलों में ActivityInstrumentationTestCase2<T> जैसे एंड्रॉइड टेस्ट क्लासेस में से एक को विस्तारित करने की आवश्यकता है और एंड्रॉइड डिवाइस पर Dalvik VM में InstrumentationTestRunner का उपयोग करके चलाया जाता है। एक परीक्षण प्रोजेक्ट बनाने के लिए आईडीई या कमांड लाइन टूल्स का उपयोग से काम करने के लिए नमूना परीक्षण बनाना चाहिए।

This blog post उपर्युक्त पदों की टिप्पणियों से जुड़ा हुआ है, Android Testing Fundamentals दस्तावेज़ जैसा जानकारी का एक अच्छा स्रोत है।

+0

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

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