2013-07-11 8 views
25


मैं एंड्रॉयड स्टूडियो के साथ काम कर रहा हूँ है और मैं अपने प्रोजेक्ट के लिए एक इकाई परीक्षण जोड़ने की जरूरत है।
मैंने विभिन्न ट्यूटोरियल पढ़े, लेकिन मुझे कुछ भी नहीं मिला।
मेरे समस्या है:
TestXMLParser.java:
AssertionFailedError: <class> कोई सार्वजनिक निर्माता

public class TestXMLParser extends ActivityInstrumentationTestCase2<HomePageActivity> { 

public TestXMLParser(Class<HomePageActivity> activityClass) { 
    super(activityClass); 
} 

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

    //Controller.init((Activity)getContext()); 
} 

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

public void testTrue() throws Exception { 
    assertTrue(true); 
} 
... 
} 

जब मैंने इसे चलाने के लिए, मैं इस संदेश को देखें:

junit.framework.AssertionFailedError: Class cz.cvut.kosapp.jUnitTests.TestXMLParser has no public constructor TestCase(String name) or TestCase() 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:190) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:175) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:555) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1661) 

मैं सच में पता नहीं क्यों। अन्य JUnit परीक्षण, अच्छी तरह से काम करता है, उदाहरण के लिए, जब मैं का उपयोग करें:

public class TestXMLParser extends AndroidTestCase { ... 
शीर्षक में

, इस काम करता है और परीक्षण सही ढंग से चल रहे हैं।
लेकिन मुझे अन्य कोड (नियंत्रक वर्ग में) चलाने के लिए संदर्भ (गतिविधि के रूप में) का उपयोग करने की आवश्यकता है।

क्या आपको कोई फर्क पड़ता है कि इसे कैसे ठीक किया जाए?
आपकी टिप्पणियों के लिए धन्यवाद।

उत्तर

44

आपको या तो एक डिफ़ॉल्ट कन्स्ट्रक्टर या एक कन्स्ट्रक्टर जोड़ने की आवश्यकता है जो पैरामीटर के रूप में String लेता है। बेस क्लास कन्स्ट्रक्टर को कॉल के साथ निम्नलिखित डिफॉल्ट कन्स्ट्रक्टर को जोड़ना चाहिए:

public TestXMLParser() { 
    super(HomePageActivity.class); 
} 
+0

टिप्पणी के लिए धन्यवाद, लेकिन यह सही उत्तर नहीं है। यह कन्स्ट्रक्टर ActivityInstrumentationTestCase2 में उपलब्ध नहीं है। – dusanjencik

+9

आप सही हैं - ActivityInstrumentationTestCase2 डिफ़ॉल्ट कन्स्ट्रक्टर का पर्दाफाश नहीं करता है। इसके बजाए, आप अपनी कक्षा के लिए एक डिफ़ॉल्ट कन्स्ट्रक्टर बनाते हैं और फिर गतिविधि इंस्ट्रूमेंटेशनटेस्टकेस 2 कन्स्ट्रक्टरों में से एक के लिए वैध पैरामीटर के साथ सुपर कॉल करते हैं - उनमें से एक जो कक्षा स्वीकार करता है - और आप परीक्षा में कक्षा में प्रवेश करते हैं। मुझे यहां कुछ समान मिला: http://stackoverflow.com/questions/2346734/trying-to-run-android-junit-tests-in-eclipse-fails –

+2

एंड्रॉइड स्टूडियो इतनी जल्दी चलता है कि प्रकाशित पुस्तकों में से आधे आपने पैसे खर्च किए हैं और बहुत से इंटरनेट उदाहरण बस काम नहीं करते हैं। – nimbusgb

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