Android — пустой набор тестов (AbstractMethodError)

Вот конфигурации в файле build.gradle:

testCompile 'junit:junit:4.12'
androidTestCompile('com.android.support:multidex-instrumentation:1.0.1') {
    exclude group: 'com.android.support', module: 'multidex'
}
androidTestCompile 'com.android.support:support-annotations:24.2.1'
androidTestCompile 'com.android.support.test:runner:0.5'
androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.jayway.android.robotium:robotium-solo:5.6.3'
androidTestCompile 'com.squareup.okhttp3:mockwebserver:3.4.1'
androidTestCompile 'com.google.truth:truth:0.30'
androidTestCompile 'com.github.ignaciotcrespo:frutilla:0.7.1'
androidTestCompile 'org.mockito:mockito-core:2.2.9'
androidTestCompile 'com.google.dexmaker:dexmaker-mockito:1.2'
androidTestCompile 'com.squareup.okhttp3:okhttp-testing-support:3.4.1'

Запуск все мои тесты или просто один из них например:

@Test
public void test_Parse_JSONRepo_ParsesRepoDTO() throws IOException {
    ObjectMapper loJSONMapper = new ObjectMapper();
    String lsRepoData = mLocalifyClient.localify().loadRawFile(R.raw.repo_octocat);

    DTORepo loRepoDTO = loJSONMapper.readValue(lsRepoData, DTORepo.class);

    assertThat(loRepoDTO).isNotNull();
    assertThat(loRepoDTO.name).isEqualTo("git-consortium");
}

Я получаю следующее сообщение в Android Studio:

Started running tests
Test running failed: Instrumentation run failed due to 'java.lang.AbstractMethodError'
Empty test suite.

person Romain R.    schedule 04.11.2016    source источник


Ответы (1)


Вывод набора тестов всегда очень лаконичен. В таких случаях всегда лучше проверить, что такое вывод logcaat «Android Monitor».

И ответ есть:

java.lang.AbstractMethodError: abstract method "org.mockito.plugins.MockMaker$TypeMockability org.mockito.plugins.MockMaker.isTypeMockable(java.lang.Class)"
    at org.mockito.internal.util.MockUtil.typeMockabilityOf(MockUtil.java:29)
    at org.mockito.internal.util.MockCreationValidator.validateType(MockCreationValidator.java:22)
    at org.mockito.internal.creation.MockSettingsImpl.validatedSettings(MockSettingsImpl.java:168)
    at org.mockito.internal.creation.MockSettingsImpl.confirm(MockSettingsImpl.java:162)
    at org.mockito.internal.MockitoCore.mock(MockitoCore.java:62)
    at org.mockito.Mockito.mock(Mockito.java:1632)
    at org.mockito.Mockito.mock(Mockito.java:1545)
    at fr.guddy.androidstarter.tests.mock.MockModuleRest.<init>(MockModuleRest.java:24)
    at fr.guddy.androidstarter.tests.mock.MockApplication.buildComponent(MockApplication.java:41)
    at fr.guddy.androidstarter.ApplicationAndroidStarter.onCreate(ApplicationAndroidStarter.java:70)
    at fr.guddy.androidstarter.tests.mock.MockApplication.onCreate(MockApplication.java:31)
    at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1024)
    at android.support.test.runner.MonitoringInstrumentation.callApplicationOnCreate(MonitoringInstrumentation.java:323)
    at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5403)
    at android.app.ActivityThread.-wrap2(ActivityThread.java)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1545)
    at android.os.Handler.dispatchMessage(Handler.java:102)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

Это известная ошибка, когда версия Mockito выше 2.0.17-beta не взаимодействует с dexmaker-mockito. Подробнее об этом здесь.

Решение состоит в том, чтобы просто использовать другую версию Mockito:

androidTestCompile 'org.mockito:mockito-core:2.0.17-beta'
person R. Zagórski    schedule 07.11.2016