2010-05-14 10 views
5

Voici ce que je suis en train de courir sur Android 1.6:VerifyError lors de l'exécution JUnit Test sur Android 1.6

package com.healthlogger.test; 

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

et:

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."); 
    } 
} 

Le principal projet est HealthLogger. Ceux-ci sont exécutés à partir d'un projet de test séparé (HealthLoggerTest). HealthLogger et jUnit4 sont dans le chemin de construction de HealthLoggerTest. jUnit4 est également dans le chemin de construction de HealthLogger. La classe "Record" se trouve dans com.healthlogger. Commenter les lignes "@Test ..." et "Record r ..." permet de lancer ce test. Quand ils ne sont pas commentés, j'obtiens une exception VerifyError. Je suis sévèrement bloqué par ceci; pourquoi cela se passe-t-il?


EDIT: quelques informations de logcat après le crash:

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

duplication possible de [tests JUnit Android échouant avec java.lang.VerifyError] (http://stackoverflow.com/questions/5437595/android-junit-tests-failing-with-java-lang-verifyerror) –

+0

être correct. Malheureusement, je ne peux plus essayer de vérifier une solution à ce problème - je n'ai pas de périphérique 1.6. Si vous pensez que les deux sont assez similaires, n'hésitez pas à supprimer/fermer cette question. –

+0

Cela se produit-il dans l'émulateur? Si c'est le cas, vous pouvez l'essayer sur l'émulateur 1.6. –

Répondre

0

Cela peut se produire lorsque vous oubliez d'exporter toutes les dépendances pour un projet de test.

Dans Eclipse, accédez aux propriétés Java Build Path de vos projets (à la fois le projet principal et le projet de test). Allez dans l'onglet Organiser/Exporter et assurez-vous de vérifier toutes les dépendances (sélectionnez tout, excepté tout conteneur JRE ou Classpath pouvant être répertorié).