Je suis nouveau dans le monde des tests et encore plus dans le monde des tests Android. En faisant des recherches sur Robolectric qui facilitent les tests sur Android, une chose me déroute le plus. Parfois, sur le Web, je vois des gens utiliser des testCompile
mots clés dans les dépendances du script de construction gradle lors du référencement de Robolectric tandis que d'autres l'utilisent androidTestCompile
. Les deux ne peuvent certainement pas être valides?
Quelqu'un peut-il expliquer la différence entre les deux et lequel de ceux-ci devrait être celui utilisé lors de l'utilisation de Robolectric?
testCompile
configuration. Les dépendances ajoutées à laandroidTestCompile
configuration ne seront disponibles que pour la source dans 'src / androidTest', qui est en fait intégré dans un APK et déployé sur un appareil.Pour répondre à votre question - Utilisez testCompile pour robolectric
pourquoi, parce que robolectric fonctionne sur la JVM en se moquant de tout le comportement de l'appareil Android.
testCompile et androidTestCompile sont des dossiers Android "par convention" que gradle utilise lors de l'exécution des tâches fournies par le plugin Android.
androidTestDebug sélectionne les tests dans le dossier androidTest, testDebug sélectionne les tests dans le dossier test,
Encore une fois, ce ne sont que des dossiers de convention que vous pouvez donner des ensembles de sources pour ces configurations
Remarque: l'espresso est une bibliothèque tellement géniale, essayez de vous éloigner de robolectric :)
la source
// test unitaire
Le code ci-dessus est une dépendance de JUnit 4 dans le fichier build.gradle dans Android Studio. Vous voyez qu'il a testCompile, car JUnit s'exécute sur JVM et ne nécessite pas de périphérique ou d'émulateur pour s'exécuter. Cela signifie également que les tests JUnit ne nécessiteront pas le contexte de l'application pour s'exécuter et s'ils le nécessitent, nous aurions besoin de les "MOCK".
// Test unitaire insturmenté
Nous voyons maintenant androidTestCompile ici, car cette fois, nous avons l'intention d'utiliser l'appareil ou l'émulateur pour les tests, c'est-à-dire les tests d'instrumentation. Pour une meilleure clarification, je suggérerais de lire sur developer.android.com
la source
Pour ajouter une dépendance pour les tests JVM ou les tests unitaires (les tests ne reposent que sur un environnement Java, nous n'avons besoin d'aucun environnement Android).
Nous utilisons la directive testCompile. Exemple:
Pour ajouter la dépendance pour le test d'instrumentation (ces tests reposent principalement sur l'environnement Android), nous utilisons la
androidTestCompile
directive.la source