Ich habe ein Android-Projekt, bei dem Mockito, Hamcrest und Espresso beim Testen helfen.
Egal, was ich mit der Gradle-Build-Datei versuche, ich bekomme NoSuchMethodError
für org.hamcrest.Matcher.anyOf
, wenn ich versuche, meine Tests nach gradle androidTestCompile
auszuführen.
Hier ist meine aktuelle Konfiguration:
%Vor%Ich habe versucht, die Anforderungen von Mockito und JUnit so umzuschreiben, dass Hamcrest ausgeschlossen wird:
%Vor%Aber das macht keinen Unterschied.
Das GameCore
-Projekt ist ein reines Java-Projekt. Es hat auch Abhängigkeiten von JUnit und Mockito, aber da sie als testCompile
angegeben sind, glaube ich nicht, dass sie stören sollten.
Die Ausgabe für gradle dependencies
für dieses Modul für 'androidTestCompile' lautet:
Bearbeiten
Nachdem ich das Problem weiter untersucht habe, sehe ich, dass Espresso Hamcrest 1.1 benötigt, aber ich verwende auch assertThat, was in Hamcrest 1.3 ist. Hamcrest 1.3 hat keine anyOf-Methode, die Espresso verwendet. Also ich denke, ich stecke fest:)
Ich habe festgestellt, dass assertThat
in Hamcrest 1.1 ist, nur in hamcrest-integration
anstatt in hamcrest-core
. Ich habe meine Build-Datei geändert und es funktioniert jetzt alles:
Ich habe versucht, espresso-1.1-bundled.jar
zu benutzen, aber das verursachte Dex-Fehler, weil zwei Kopien von Hamcrest 1.1 gezogen wurden, also hätte ich es aus einer Reihe von Abhängigkeiten ausschließen müssen.
Ich benutze derzeit all diese Bibliotheken in meinem Android Gradle-Projekt (Ich mag es wirklich zu testen und TDD :)).
Hier ist der Abhängigkeitenabschnitt meiner build.gradle-Datei:
%Vor%Viele davon können Sie wahrscheinlich ignorieren, deshalb ist hier eine Liste mit nur den spezifischen zu testen:
%Vor%Und die Dexmaker-Bibliotheken finden Sie hier: Ссылка
und hier:
Tags und Links android gradle junit mockito android-espresso