我最近尝试过针对Android Gradle插件的新Jacoco代码覆盖功能,不幸的是它使我的测试失败并出现以下错误:
java.lang.VerifyError: com/foo/bar/rest/SomeClass at
com.foo.bar.test.rest.BaseTest.setUp(BaseTest.java:87) 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:1584)
我在build.gradle中使用这些行启用了代码覆盖:
buildTypes {
debug {
testCoverageEnabled = true
}
...
有没有人遇到同样的问题?
答案 0 :(得分:4)
将@ ben75的评论转换为答案:corresponding bug已修复为build-tools 21.0.0。但是,该版本引入了另一个Windows-specific bug,因此您应该使用build-tools 21.0.2(即使该版本尚未显示在revisions page上)。
答案 1 :(得分:1)
我遇到了同样的问题,但找到了这个解决方案: 将-noverify添加到您的gradle文件中,如下所示:
testOptions {
unitTests {
all {
// configure the test JVM arguments
jvmArgs '-noverify'
}
}
}
来源:https://github.com/robolectric/robolectric-gradle-plugin/issues/144
答案 2 :(得分:-2)
在编译和运行时使用的库之间存在不一致的情况下,您将收到java.lang.VerifyError
。
这是列出类似问题的另一个主题:Java.lang.verifyerror how do I fix or even find out the root cause?