Comment exécuter un test sur une seule unité en utilisant gradle wrapper 2.2.1 depuis la ligne de commande
en utilisant Android studio avec gradle wrapper version 2.2.1, j'essaie d'exécuter tous les tests dans une seule classe de test, ainsi qu'un test spécifique à l'intérieur de cette classe et j'ai essayé d'utiliser:
./gradlew test --tests DownloadsActivityTest
comme le suggère la documentation, ainsi que
-DandroidTest.single=DownloadsActivityTest
mais aucune de ces versions ne fonctionne.
Comment puis-je lancer une seule classe de test, et un seul test à partir de la ligne de commande en utilisant le papier d'emballage gradle?
./gradlew --version
------------------------------------------------------------
Gradle 2.2.1
------------------------------------------------------------
Build time: 2014-11-24 09:45:35 UTC
Build number: none
Revision: 6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
Groovy: 2.3.6
Ant: Apache Ant(TM) version 1.9.3 compiled on December 23 2013
JVM: 1.7.0_51 (Oracle Corporation 24.51-b03)
OS: Linux 3.17.6-200.fc20.x86_64 amd64
[16:33][j@localhost:~/myHomeDir]$ ./gradlew test --tests DownloadsActivityTest
WARNING: Dependency commons-logging:commons-logging:1.1.1 is ignored for debugTest as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
WARNING: Dependency org.apache.httpcomponents:httpclient:4.0.3 is ignored for debugTest as it may be conflicting with the internal version provided by Android.
In case of problem, please repackage it with jarjar to change the class packages
FAILURE: Build failed with an exception.
* What went wrong:
Problem configuring task :app:test from command line.
> Unknown command-line option '--tests'.
* Try:
Run gradlew help --task :app:test to get task usage details. Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Total time: 4.466 secs
4 réponses
le plugin Gradle Android, à partir de 1.0.0, ne dispose pas de prise en charge pour l'exécution de tests Android simples. La fonction de demande est déposée à https://code.google.com/p/android/issues/detail?id=74196.
je sais qu'un meilleur support de test en général est très élevé sur la liste des priorités post-1.0, mais je ne peux pas dire avec certitude quand cela sera mis en œuvre.
Pour exécuter uniquement instrumentation tests (androidtest) dans une classe de test, exécution:
./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest
Pour exécuter uniquement tests ("unit", tests JVM) dans une classe ou un paquet de test spécifique:
./gradlew :app:testDebugUnitTest --tests "com.example.android.testing.blueprint.unit.integrationTests.*"
./gradlew :<module name>:test<CapitalCasedBuildVariant> --tests "<Test name pattern>"
il est important de spécifier le nom du module où le test vit, sinon, quand gradle construit des modules dépendants, il tentera de les tester, et pourrait échouer parce qu'aucun des tests ne correspond au modèle de test:
No tests found for given includes: [FooTest]
Aussi, sauf si vous spécifiez le complet-nom (FQN
) du test, votre modèle de nom de test devrait commencer par un *
.
Dans mon cas, j'ai un module nommé app
et une variante nommée localDebug
, et je voulais tester FooTest
, alors j'ai couru:
./gradlew :app:testLocalDebug --tests "*FooTest"
ceci est pris en charge dans Android Studio 1.1, en utilisant le plugin Android Gradle v1.1.0.
Suivez le guide ici