Sto lavorando con Android Studio e devo aggiungere un test di unità al mio progetto.
Ho letto vari tutorial, ma nulla mi ha abbandonato.
Il mio problema è:
TestXMLParser.java:
AssertionFailedError: <class> non ha costruttore pubblico
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);
}
...
}
quando l'eseguo, vedo questo messaggio:
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)
Io davvero non so perché. Altri test JUnit funziona bene, per esempio quando uso:
public class TestXMLParser extends AndroidTestCase { ...
nell'intestazione, questo funziona e le prove sono in esecuzione in modo corretto.
Ma Ho bisogno di usare il contesto (come attività) per eseguire altro codice (in classe Controller).
Avete qualche idea di come sistemarlo?
Grazie per i vostri commenti.
Grazie per un commento, ma non è risposta corretta. Questo costruttore non è disponibile in ActivityInstrumentationTestCase2. – dusanjencik
Sei corretto - ActivityInstrumentationTestCase2 non espone un costruttore predefinito. Invece, si crea un costruttore predefinito per la classe e quindi si chiama super con parametri validi per uno dei costruttori ActivityInstrumentationTestCase2, uno dei quali accetta una classe, e si passa alla classe sotto test. Ho trovato qualcosa di simile anche qui: http://stackoverflow.com/questions/2346734/trying-to-run-android-junit-tests-in-eclipse-fails –
Android Studio si muove così velocemente che metà dei libri pubblicati che hai speso soldi e molti degli esempi di internet semplicemente non funzionano. – nimbusgb