2014-12-18 5 views
17

Mit Android Studio mit Gradle Wrapper Version 2.2.1, versuche ich, alle Tests in einer einzigen Testklasse sowie einen spezifischen Test durchzuführen innerhalb dieser Klasse und verwendet haben versucht:So führen Sie einen einzelnen Einheitentest mit dem Wrapper 2.2.1 von der Befehlszeile aus

./gradlew test --tests DownloadsActivityTest 

wie die Dokumentation sowie

-DandroidTest.single=DownloadsActivityTest 

Aber keine dieser Versionen arbeiten lässt.

Wie führe ich eine einzelne Testklasse und einen einzelnen Test von der Kommandozeile mit Hilfe des Gradle Wrappers aus?

./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][[email protected]:~/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 

Antwort

1

Das Android Gradle Plugin, wie von 1.0.0, haben keine Unterstützung für einzelne Android-Tests ausgeführt werden. Die Feature-Anforderung dafür ist bei https://code.google.com/p/android/issues/detail?id=74196 abgelegt.

Ich weiß, dass eine bessere Testunterstützung im Allgemeinen auf der Post-1.0-Prioritätsliste sehr hoch ist, aber ich kann nicht mit Sicherheit sagen, wann dies implementiert wird.

2

Dies wird in Android Studio 1.1 mit dem Android Gradle-Plugin v1.1.0 unterstützt.

Folgen Sie dem Führer here

+0

er versucht, eine einzelne Testklasse auszuführen. was das Android Studio Graadle Plugin nicht unterstützt, ist das Problem – ZakTaccardi

9
./gradlew :<module name>:test<CapitalCasedBuildVariant> --tests "<Test name pattern>" 

Es ist wichtig, den Modulnamen angeben, wo die Testdauer, andernfalls, wenn gradle abhängige Module baut, wird er versuchen, sie zu testen, und vielleicht, weil keiner der Fail Tests passen das Testmuster:

No tests found for given includes: [FooTest] 

auch wenn Sie den vollständig qualifizierten Namen (FQN) des Tests der Testnamensmuster mit einem * beginnen angeben sollen.

In meinem Fall habe ich ein Modul app und eine Variante namens localDebug genannt, und ich wollte FooTest testen, so dass ich lief:

./gradlew :app:testLocalDebug --tests "*FooTest" 
+3

Dies funktioniert für Unit-Tests, nicht Instrumentierung Tests. –

13

Um nur Instrumentierung Tests (androidTests) laufen in einem bestimmten Testklasse, ausführen:

./gradlew app:connectedAndroidTest -Pandroid.testInstrumentationRunnerArguments.class=com.example.android.testing.blueprint.ui.espresso.EspressoTest 

Um nur lokalen Testlauf s ("unit", JVM-Tests) in einer bestimmten Testklasse oder in einem bestimmten Paket ausführen:

Verwandte Themen