Подтвердить что ты не робот

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
         } 
...

Кто-нибудь сталкивался с той же проблемой?

4b9b3361

Ответ 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 Как исправить или даже выяснить причину?