Mam projekt Androida, który używa Mockito, Hamcrest i Espresso do pomocy przy testowaniu.Konfigurowanie gradle do używania JUnit, Mockito, Hamcrest i Espresso
Bez względu na to, co próbuję z plikiem kompilacji Gradle, dostaję NoSuchMethodError
dla org.hamcrest.Matcher.anyOf
kiedy próbuję uruchomić moje testy po wykonaniu gradle androidTestCompile
.
Oto moja obecna konfiguracja:
dependencies {
compile project(':GameCore')
androidTestCompile files(
'libs/espresso-1.1.jar',
'libs/testrunner-1.1.jar',
'libs/testrunner-runtime-1.1.jar'
)
androidTestCompile(
'junit:junit:4.11',
'org.mockito:mockito-core:1.10.0',
'com.google.guava:guava:14.0.1',
'com.squareup.dagger:dagger:1.1.0',
'com.google.dexmaker:dexmaker:1.0',
'com.google.dexmaker:dexmaker-mockito:1.0',
'org.hamcrest:hamcrest-core:1.3',
'org.hamcrest:hamcrest-library:1.3'
)
Próbowałem przepisywanie wymagania JUnit z Mockito i wykluczyć Hamcrest tak:
androidTestCompile('junit:junit:4.11') {
exclude group: 'org.hamcrest'
}
Ale to nie robi żadnej różnicy.
Projekt GameCore
jest projektem czysto Java. Ma również zależności od JUnit i Mockito, ale ponieważ są one określone jako testCompile
, nie sądzę, że powinny przeszkadzać.
Wyjście dla gradle dependencies
dla tego modułu dla „androidTestCompile` jest:
+--- junit:junit:4.11
| \--- org.hamcrest:hamcrest-core:1.3
+--- org.mockito:mockito-core:1.10.0
| +--- org.hamcrest:hamcrest-core:1.1 -> 1.3
| \--- org.objenesis:objenesis:2.1
+--- com.google.guava:guava:14.0.1
+--- com.squareup.dagger:dagger:1.1.0
| \--- javax.inject:javax.inject:1
+--- com.google.dexmaker:dexmaker:1.0
+--- com.google.dexmaker:dexmaker-mockito:1.0
| +--- com.google.dexmaker:dexmaker:1.0
| \--- org.mockito:mockito-core:1.9.5 -> 1.10.0 (*)
+--- org.hamcrest:hamcrest-core:1.3
\--- org.hamcrest:hamcrest-library:1.3
\--- org.hamcrest:hamcrest-core:1.3
Edit
uwzględniając dalsze badania tego problemu, widzę, że espresso musi Hamcrest 1.1, ale jestem również używając assertThat, który jest w Hamcrest 1.3. Hamcrest 1.3 nie ma metody AnyOf używanej przez espresso. Tak myślę, że utknąłem :)
Czy można uruchomić 'gradle dependencies' na tym module i opublikować dane wyjściowe dla odpowiedniego zadania? –