Konfigurieren von gradle verwenden, JUnit, Mockito, Hamcrest und Espresso
Ich habe ein Android-Projekt verwenden, Mockito, Hamcrest und Espresso beim testen helfen.
Egal was ich versuche, mit den Gradle-build-file, bekomme ich eine NoSuchMethodError
für org.hamcrest.Matcher.anyOf
wenn ich versuche, meinen tests nach zu tun gradle androidTestCompile
.
Hier ist meine aktuelle Konfiguration:
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'
)
Habe ich versucht, das umschreiben der Mockito und JUnit Anforderungen ausschließen Hamcrest etwa so:
androidTestCompile('junit:junit:4.11') {
exclude group: 'org.hamcrest'
}
Aber das macht keinen Unterschied.
Den GameCore
Projekt ist ein reines Java-Projekt. Es hat auch Abhängigkeiten auf JUnit und Mockito, sondern so, wie Sie sind angegeben als testCompile
ich glaube nicht, sollten Sie Sie stören.
Die Ausgabe für gradle dependencies
für dieses Modul für 'androidTestCompile` ist:
+--- 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
Bearbeiten
Weiteren untersucht das problem, das ich sehe, dass espresso braucht Hamcrest 1.1, aber ich bin auch mit assertThat, die in Hamcrest 1.3. Hamcrest 1.3 nicht die anyOf Methode, espresso verwendet. Also ich denke, ich bin hängen geblieben 🙂
- Kann man
gradle dependencies
auf das Modul und poste die Ausgabe für die entsprechende Aufgabe?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Merkte ich, dass
assertThat
ist in Hamcrest 1.1, es ist nur inhamcrest-integration
statthamcrest-core
. Ich habe meine build-Datei und es funktioniert jetzt:Versuchte ich mit
espresso-1.1-bundled.jar
aber das verursacht dex Fehler, da zwei Kopien von Hamcrest 1.1 gezogen wurden, so würde ich ausschließen mussten es aus einer Reihe von Abhängigkeiten.Ich bin derzeit mit all jenen Bibliotheken, die in meinem Android-Gradle-Projekt (ich mag Tests und TDD als auch 🙂 ).
Hier sind die Abhängigkeiten Abschnitt von meinem build.gradle-Datei:
Eine Menge von diesen kann man wohl ignorieren, also hier ist eine Liste mit genau einem bestimmten diejenigen zu testen:
Und die dexmaker libs kann hier gefunden werden:
https://code.google.com/p/dexmaker/downloads/detail?name=dexmaker-1.0.jar&can=2&q=
und hier:
https://code.google.com/p/dexmaker/downloads/detail?name=dexmaker-mockito-1.0.jar&can=2&q=