Java.lang.VerifyError при запуске тестов на Android с testCoverageEnabled = true
Недавно я попробовал новую функцию покрытия кода Jacoco для плагина Android Gradle, и, к сожалению, это приводит к сбою моих тестов со следующей ошибкой:
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
}
...
Кто-нибудь сталкивался с той же проблемой?
Ответы
Ответ 1
Turning @ben75 прокомментирует ответ: соответствующая ошибка была исправлена с помощью build-tools 21.0.0. Однако в этой версии появилась еще одна ошибка, связанная с Windows, поэтому вместо этого вы должны использовать build-tools 21.0.2 (хотя эта версия еще не показывается на странице версий).
Ответ 2
Я столкнулся с этой же проблемой, но нашел это решение:
add -noverify в ваш файл gradle следующим образом:
testOptions {
unitTests {
all {
// configure the test JVM arguments
jvmArgs '-noverify'
}
}
}
Источник: https://github.com/robolectric/robolectric-gradle-plugin/issues/144
Ответ 3
Вы получите java.lang.VerifyError
в любое время, если существует несоответствие между библиотекой, используемой во время компиляции и времени выполнения.
Вот еще один поток, который перечисляет аналогичную проблему: Java.lang.verifyerror Как исправить или даже выяснить причину?