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é 🙂
gradle dependencies
sur ce module et après la sortie de la tâche?OriginalL'auteur Pikaling | 2014-11-05
Vous devez vous connecter pour publier un commentaire.
J'ai réalisé que
assertThat
est dans Hamcrest 1.1, c'est juste danshamcrest-integration
au lieu dehamcrest-core
. J'ai modifié mon fichier de build et ça fonctionne maintenant:J'ai essayé d'utiliser
espresso-1.1-bundled.jar
mais qui a provoqué dex erreurs parce que les deux copies de Hamcrest 1.1 ont été ajoutés, de sorte que j'aurais dû l'exclure de tout un tas de dépendances.OriginalL'auteur Pikaling
Je suis actuellement en utilisant l'ensemble de ces bibliothèques dans mon Android Gradle projet (j'ai VRAIMENT envie de tester et TDD bien 🙂 ).
Ici est la section des dépendances de mon build.gradle fichier:
Beaucoup de ces vous pouvez probablement ignorer voici donc une liste avec juste des spécifiques pour les tests:
Et la dexmaker libs peut être trouvé ici:
https://code.google.com/p/dexmaker/downloads/detail?name=dexmaker-1.0.jar&can=2&q=
et ici:
https://code.google.com/p/dexmaker/downloads/detail?name=dexmaker-mockito-1.0.jar&can=2&q=
Hamcrest est livré avec espresso donc je pense qu'il est entièrement contenu dans cette lib.
Ah OK. Je ne suis pas en utilisant le tout-en-un version de la machine à expresso que j'essaie d'éviter la dépendance des affrontements, donc j'ai inclus hamcrest séparément
OriginalL'auteur Andre Perkins