的VerifyError当在Android 1.6中运行JUnit测试
-
26-09-2019 - |
题
下面就是我试图在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。
注释了“@测试...”和“记录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)
解决方案
当你忘记导出所有依赖一个测试项目可能出现这种情况。
在Eclipse中,转到为您的项目Java构建路径属性(包括主体工程和测试项目)。转至组织/导出选项卡,请务必检查所有相关性(全选,除了可能被列出的任何JRE或类路径容器)。
不隶属于 StackOverflow