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
18
demandé sur JohnRock 2014-12-19 00:43:53

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.

1
répondu Scott Barta 2014-12-18 22:19:33

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.*"
14
répondu Jose Alcérreca 2016-12-06 15:20:14
./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"
9
répondu Heath Borders 2015-03-07 06:06:33

ceci est pris en charge dans Android Studio 1.1, en utilisant le plugin Android Gradle v1.1.0.

Suivez le guide ici

2
répondu Christian García 2015-02-25 15:59:11