Używanie android gradle + dagger do uruchamiania testów instrumentalnych

Zacząłem używać Android Studio i gradle ostatnio do rozwoju Androida i uważam, że ogólnie lepiej niż eclipse / ant lub maven. Jednak ostatnio zacząłem próbować wdrożyć jakieś testy jednostkowe i integracyjne z moją aplikacją. Udało mi się uzyskać podstawowe testy przy użyciu niedawno wydanej przez google platformy Espresso. Miałem jednak kilka testów, w których musiałem drwić i wstrzyknąć wyszydzone wersje obiektów. W przeszłości użyłem sztyletu do innego projektu, więc włączyłem sztylet do mojego projektu. Jednak teraz moje testy nie zostaną uruchomione z powodu następującego błędu:

gradle connectedCheck

...

4.1.2 nie powiodło się: Uruchomienie oprzyrządowania nie powiodło się z powodu „java.lang.IllegalAccessError”: EspressoApp: connectedCheck

Stworzyłem tutaj proste demo:https://github.com/mwolfe38/android-espresso-dagger

Wystarczy klonować, a następnie uruchomić z linii poleceń: gradle connectedCheck

W powyższym przykładzie wypróbowałem zależności na kilka różnych sposobów, początkowo w ten sposób:

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'
}

ale to daje mi błąd dotyczący inicjalizacji statycznej. Wydaje się, że przyczyną jest jakiś statyczny kod inicjujący w ramce espresso dotyczący sztyletu. Więc po dodaniu zależności daggera do instrumentTestCompile otrzymuję wspomniany powyżej błąd IllegalAccessError.

Czy ktoś ma szczęście, w tym sztylet w projekcie i wykonywanie testów espresso?

questionAnswers(2)

yourAnswerToTheQuestion