2010-05-14 68 views
5

運行JUnit測試這裏就是我試圖在Android 1.6上運行:的VerifyError當上了Android 1.6

package com.healthlogger.test; 

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

和:

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

主要項目是HealthLogger。這些是從一個單獨的測試項目(HealthLoggerTest)運行的。 HealthLogger和jUnit4在HealthLoggerTest的構建路徑中。 jUnit4也在HealthLogger的構建路徑中。 「記錄」類位於com.healthlogger中。

註釋「@Test ...」和「Record r ...」行可以運行此測試。當它們被取消註釋時,我得到一個VerifyError異常。我被這個嚴重阻止;爲什麼會發生?


編輯:從logcat的暴跌後一些信息:

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

[Android JUnit Tests failed with java.lang.VerifyError]的可能重複(http://stackoverflow.com/questions/5437595/android-junit-tests-failing-with-java-lang-verifyerror) – 2011-07-02 22:13:31

+0

你可能會是正確的。不幸的是,我不能再嘗試驗證這個問題的解決方案 - 我沒有1.6設備。如果您覺得兩者足夠相似,請隨時刪除/關閉此問題。 – 2011-07-04 16:11:12

+0

它是否發生在模擬器中?如果是這樣,你可以在1.6模擬器上試試。 – 2011-07-21 15:02:02

回答

0

當你忘記導出所有依賴一個測試項目可能出現這種情況。

在Eclipse中,轉到項目的Java Build Path屬性(包括主項目和測試項目)。轉到組織/導出選項卡,並確保檢查所有依賴關係(全選,除了可能列出的任何JRE或類路徑容器外)。