Verwenden von Android Gradle + Dolch, um instrumentTests auszuführen

Ich habe vor kurzem begonnen, Android Studio und Gradle für die Android-Entwicklung zu verwenden und finde es insgesamt viel besser als Eclipse / Ant oder Maven. Allerdings habe ich kürzlich begonnen, mit meiner App eine Art Unit- und / oder Integrationstest durchzuführen. Ich konnte grundlegende Tests mit dem kürzlich von Google veröffentlichten Espresso-Framework durchführen. Ich hatte jedoch einige Tests, bei denen ich verspottete Versionen von Objekten verspotten und injizieren musste. Ich habe Dolch in der Vergangenheit für ein anderes Projekt verwendet, also habe ich Dolch in mein Projekt aufgenommen. Allerdings können meine Tests jetzt aufgrund des folgenden Fehlers nicht ausgeführt werden:

gradle connectedCheck

...

4.1.2 fehlgeschlagen: Instrumentierungslauf fehlgeschlagen aufgrund von 'java.lang.IllegalAccessError': EspressoApp: connectedCheck

Ich habe hier eine einfache Demo dazu erstellt:https://github.com/mwolfe38/android-espresso-dagger

Einfach klonen und dann von der Kommandozeile ausführen: gradle connectedCheck

Oben habe ich die Abhängigkeiten auf verschiedene Arten ausprobiert:

dependencies {
    compile 'com.android.support:appcompat-v7:+'
    compile 'com.squareup.dagger:dagger-compiler:1.1.0'
    compile 'com.squareup.dagger:dagger:1.1.0'

    instrumentTestCompile files('libs/espresso-1.0-SNAPSHOT.jar',
            'libs/testrunner-1.0-SNAPSHOT.jar',
            'libs/testrunner-runtime-1.0-SNAPSHOT.jar')
    instrumentTestCompile 'org.hamcrest:hamcrest-all:1.3'
    instrumentTestCompile 'com.google.guava:guava:15.0'
}

das gibt mir aber einen fehler bei der statischen initialisierung. Dies scheint durch einen statischen Initialisierungscode im Espresso-Framework in Bezug auf Dolch verursacht zu werden. Nach dem Hinzufügen von Dolchabhängigkeiten zu instrumentTestCompile erhalte ich den oben erwähnten IllegalAccessError.

Hat jemand Glück mit Dolch in Ihrem Projekt und macht Espressotests?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage