2010-05-14 16 views
5

Ecco quello che sto cercando di eseguire su Android 1.6:VerifyError durante l'esecuzione di test JUnit su Android 1.6

package com.healthlogger.test; 

public class AllTests extends TestSuite 
{ 
    public static Test suite() 
    { 
     return new TestSuiteBuilder(AllTests.class).includeAllPackagesUnderHere().build(); 
    } 
} 

e:

package com.healthlogger.test; 

public class RecordTest extends AndroidTestCase 
{ 

    /** 
    * Ensures that the constructor will not take a null data tag. 
    */ 
    @Test(expected=AssertionFailedError.class) 
    public void testNullDataTagInConstructor() 
    { 
     Record r = new Record(null, Calendar.getInstance(), "Data"); 
     fail("Failed to catch null data tag."); 
    } 
} 

Il progetto principale è HealthLogger. Questi vengono eseguiti da un progetto di test separato (HealthLoggerTest). HealthLogger e jUnit4 si trovano nel percorso di generazione di HealthLoggerTest. jUnit4 è anche nel percorso di build di HealthLogger. La classe "Record" si trova in com.healthlogger.

Commentando le righe "@Test ..." e "Record r ..." è possibile eseguire questo test. Quando non sono commentati, ottengo un'eccezione VerifyError. Sono severamente bloccato da questo; perché sta succedendo?


EDIT: alcune informazioni da logcat dopo l'incidente:

E/AndroidRuntime(3723): Uncaught handler: thread main exiting due to uncaught exception      
    E/AndroidRuntime(3723): java.lang.VerifyError: com.healthlogger.test.RecordTest  E/AndroidRuntime(3723): at java.lang.Class.getDeclaredConstructors(Native Method) 
    E/AndroidRuntime(3723): at java.lang.Class.getConstructors(Class.java:507) E/AndroidRuntime(3723): at android.test.suitebuilder.TestGrouping$TestCasePredicate.hasValidConstructor(TestGrouping.java:226) 

E/AndroidRuntime(3723): at android.test.suitebuilder.TestGrouping$TestCasePredicate.apply(TestGrouping.java:215) 

E/AndroidRuntime(3723): at android.test.suitebuilder.TestGrouping$TestCasePredicate.apply(TestGrouping.java:211) 

E/AndroidRuntime(3723):  at android.test.suitebuilder.TestGrouping.select(TestGrouping.java:170) E/AndroidRuntime(3723):  at android.test.suitebuilder.TestGrouping.selectTestClasses(TestGrouping.java:160) 

E/AndroidRuntime(3723):  at android.test.suitebuilder.TestGrouping.testCaseClassesInPackage(TestGrouping.java:154) 

E/AndroidRuntime(3723):  at android.test.suitebuilder.TestGrouping.addPackagesRecursive(TestGrouping.java:115) 

E/AndroidRuntime(3723):  at android.test.suitebuilder.TestSuiteBuilder.includePackages(TestSuiteBuilder.java:103) 

E/AndroidRuntime(3723):  at android.test.InstrumentationTestRunner.onCreate(InstrumentationTestRunner.java:321) 

E/AndroidRuntime(3723):  at android.app.ActivityThread.handleBindApplication(ActivityThread.java:3848) 

E/AndroidRuntime(3723):  at android.app.ActivityThread.access$2800(ActivityThread.java:116) E/AndroidRuntime(3723):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1831) 

E/AndroidRuntime(3723): at android.os.Handler.dispatchMessage(Handler.java:99) 

E/AndroidRuntime(3723): at android.os.Looper.loop(Looper.java:123) E/AndroidRuntime(3723):  at android.app.ActivityThread.main(ActivityThread.java:4203) 

E/AndroidRuntime(3723): at java.lang.reflect.Method.invokeNative(Native Method) 

E/AndroidRuntime(3723): at java.lang.reflect.Method.invoke(Method.java:521) 

E/AndroidRuntime(3723): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791) 

E/AndroidRuntime(3723):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549) E/AndroidRuntime(3723):  at dalvik.system.NativeStart.main(Native Method) 
+0

possibile duplicato di [Test JUnit Android non riuscito con java.lang.VerifyError] (http://stackoverflow.com/questions/5437595/android-junit-tests-failing-with-java-lang-verifyerror) –

+0

sii corretto Sfortunatamente, non posso più provare a verificare una soluzione a questo problema - Sono senza un dispositivo 1.6. Se ritieni che i due siano abbastanza simili, ti preghiamo di eliminare/chiudere questa domanda. –

+0

Si verifica nell'emulatore? Se è così, puoi provarlo con l'emulatore 1.6. –

risposta

0

Questo può verificarsi quando si dimentica di esportare tutte le dipendenze per un progetto di test.

In Eclipse, andare alle proprietà del percorso di costruzione Java per i progetti (sia il progetto principale che il progetto di test). Vai alla scheda Organizza/Esporta e assicurati di controllare tutte le dipendenze (seleziona tutto, eccetto per qualsiasi JRE o contenitore Percorso di classe che potrebbe essere elencato).

Problemi correlati