L'exécution d'une instrumentation spécifique de l'unité de test avec Gradle
Est-il un moyen pour exécuter le Android instrumentation de test de l'unité à l'aide de Gradle? J'ai essayé
gradle -Dtest.single=UnitTestName connectedInstrumentTest
mais il semble que pour exécuter tous les tests dans le package.
Vous devez vous connecter pour publier un commentaire.
À l'aide de
test.single
semble être obsolète. La nouvelle manière correcte de le faire estoù
<pattern>
pourrait être quelque chose comme:com.example.MyTest
pour exécuter tous les tests méthodes en com.exemple.MyTest*MyTest
pour correspondre à toutes les méthodes de toutes les classes dont le nom se termine avec MyTest*.MyTest.myMethod
pour exécuter un test spécifique de la méthode dans la classe MyTest dans un paquetSi vous avez un multi-projet de construction, assurez-vous de donner le chemin d'accès du module avant de le
test
tâche; sinon, vous aurez un mauvais message d'erreur lors de la recherche pour votre modèle de test dans chaque sous-projet.Rien de tout cela est documenté sur le Gradle site où je pourrais le trouver.
Unknown command-line option '--tests'
Unknown command-line option '--tests'
si je ne./gradlew test --tests *MyTest
, mais il fonctionne très bien si je ne./gradlew testStagingDebug --tests *Mytest
. (Mon projet est de saveurs, de sortetestStagingDebug
est la tâche que j'ai l'habitude de l'exécuter pour exécuter des tests, bien que latest
tâche existe et fonctionne.)Unknown command-line option '--tests'
, sauf si vous spécifiez un caractère générique dans le modèle OU l'utilisation :<module>:testDebug (ou toute autre saveur)--tests
j'ai eu la suite de travailler./gradlew :app:connectedDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.locuslabs.android.sdk.TestActivityTest
grâce à stackoverflow.com/a/49403467/2848676Le motif est
-D<testTaskName>.single=<TestClass>
donc dans votre exemple, il devrait être:gradlew -DconnectedInstrumentTest.single=UnitTestName connectedInstrumentTest
aussi lance tous les tests.UnitTestName
un nom de classe ou une méthode de test nom? Il doit être un nom de classe../gradlew -Dtest.single=SimpleTest test
. Cependant, il exécute tous les tests que j'ai. J'ai environ 11 tests et je veux courir à seulement 1 essai dans SimpleTest de la classe.Cela fonctionne si vous utilisez un
instrumentationTestRunner
:À l'aide de gradle 2.10 et android plugin gradle 2.0.0-beta2.
Puisque vous savez ce test(s) que vous souhaitez exécuter, vous le savez sans doute du module /de la saveur à utiliser trop. Vous pouvez aider à Gradle par précisant le module et Gradle tâche. Donc, si votre test est dans la
app
module et que vous souhaitez tester ledebug
saveur:./gradlew connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class='<pkg>.YourClassName'
-Pandroid.testInstrumentationRunnerArguments.package=my.package
Depuis Android plugin gradle 1.1.0-rc1, on peut courir seul de la classe de test à l'aide de
--tests
le drapeau d'exécution:Voir http://tools.android.com/tech-docs/unit-testing-support#TOC-Running-from-Gradle
Tu dois vérifier cela.
https://github.com/JCAndKSolutions/android-unit-test
J'ai fait un problème dans ce dépôt github, et ce gars a résolu mon problème et de le télécharger à maven, donc, dans mon construire.gradle fichier j'utilise ce plugin.
Instructions sont écrites dans son référentiel. vous pouvez facilement suivre.
Après l'utilisation de ce android-unité-plugin de test, je peux l'utiliser comme
ou
Maintenant ça fonctionne et je n'ai pu exécuter les tests je veux
Erdi la réponse n'a pas fonctionné pour moi, mais j'ai un seul parent pour toutes mes classes de test j'ai donc été en mesure de le faire:
Ce n'exécute que
MyTestClassName
. Nous pouvons étendre encore plus pour exécuter une seule méthode d'essai en particulier (ou les méthodes):Vous ne devez pas oublier de spécifier une accumulation nom de la variante après
test
déclaration de la propriété comme-Dtest<buildVariantName>=<yourTestName>
.Comme si vous avez une
debug
type de build qui vous donnedebug
variante après la compilation, alors si vous voulez exécuter un seul test pour construire cette variante, vous devez déclarer une commande comme ceci:./gradlew -DtestDebug=UnitTestName testDebug
la Gradle commande ne fonctionne pas pour moi.
J'ai utilisé ci-dessous mentioened bad commande.
pour cela, vous devez construire votre apk en premier.
adb shell suis instrument -w -r -e -e debug faux .debug.test/android.de soutien.test.runner.AndroidJUnitRunner