Existe-t-il un moyen d'exécuter uniquement un ensemble spécifique de tests dans un projet Android Gradle ?
-
21-12-2019 - |
Question
J'ai un projet Android/Gradle.Chaque fois que je veux exécuter des tests, je lance :
./gradlew connectedInstrumentTest
qui exécute tous mes tests dans le dossier test de mon projet.
Mon dossier de tests contient plusieurs tests d'automatisation ainsi que des tests de non-automatisation.Je souhaite surtout exécuter les tests rapides de non-automatisation sans les tests d'automatisation lents.
Existe-t-il un moyen d'exécuter uniquement un ensemble spécifique de tests, par exemple à partir d'une classe spécifique ou quelque chose de similaire ?Je pose essentiellement des questions sur tout type de séparation afin de pouvoir choisir d'exécuter seulement quelques tests quand je le souhaite.
Création d'un exemple de projet ici.
Modifier local.properties
pour pointer vers votre SDK Android.
Ensuite, démarrez un émulateur ou connectez un téléphone à votre ordinateur.Ensuite, vous pouvez exécuter des tests en utilisant ./gradlew connectedInstrumentTest --info
.Cela exécute tous les tests.
Ce que je n'arrive pas à comprendre, c'est comment exécuter des tests uniquement dans, disons, une classe et non dans tous les tests.
La solution
Depuis le plugin Android Gradle 1.3.0
À partir de la version 1.3.0, vous pouvez (enfin !) spécifier les arguments que le plugin Android Gradle doit transmettre au InstrumentationTestRunner
.
Par exemple, si vous souhaitez exécuter uniquement les tests annotés avec @SmallTest
et ignore les autres :
android {
//....
defaultConfig {
//....
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
testInstrumentationRunnerArgument "size", "small"
}
}
Ancienne solution de contournementAvant le plugin 1.3.0, il n'est pas possible de faire cela mais j'ai trouvé une petite solution de contournement.En gros, j'ai annoté avec le @SmallTest
annotation des tests rapides et utilisation d'une sous-classe personnalisée du InstrumentationTestRunner
Je suis capable de les exécuter uniquement et non de la suite entière.
Vous pouvez trouver l'exemple de code dans cet essentiel.
Autres conseils
Oui, veuillez regarder ici .Il devrait également travailler avec un projet Android.Malheureusement, autant que je sache, il n'y a aucun moyen de lancer une méthode unique - vous pouvez limiter à une combinaison entière uniquement.
Aussi, vous pouvez installer une combinaison de test sur l'appareil et l'exécuter manuellement via ADB.Voir Documents Android