La configuration de gradle pour utiliser JUnit, Mockito, Hamcrest et Espresso

J'ai un projet Android qui utilise Mockito, Hamcrest et Expresso pour aider à tester.

Peu importe ce que j'ai essayer avec le fichier de build Gradle, je reçois un NoSuchMethodError pour org.hamcrest.Matcher.anyOf lorsque j'essaie d'exécuter mes tests après avoir fait gradle androidTestCompile.

Voici ma configuration actuelle:

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

J'ai essayé de réécrire les Mockito et JUnit exigences d'exclure Hamcrest comme suit:

androidTestCompile('junit:junit:4.11') {
    exclude group: 'org.hamcrest'
}

Mais cela ne fait aucune différence.

La GameCore projet est un pur projet Java. Il dispose également de dépendances sur JUnit et Mockito, mais comme ils sont spécifiés comme testCompile, je ne pense pas qu'ils devraient être interférer.

La sortie pour gradle dependencies pour ce module pour " androidTestCompile` est:

+--- 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

Modifier

Avoir encore étudié le problème, je vois que l'espresso besoins Hamcrest 1.1, mais je suis également en utilisant assertThat, qui est en Hamcrest 1.3. Hamcrest 1.3 n'a pas le anyOf méthode espresso utilise. Donc je suppose que je suis coincé 🙂

Pouvez-vous exécuter gradle dependencies sur ce module et après la sortie de la tâche?

OriginalL'auteur Pikaling | 2014-11-05