2016-07-20 16 views
2

Gibt es eine Möglichkeit, Android-Komponententests oder -konfigurationen über die Befehlszeile auszuführen? Derzeit führt "grddle test" alle Tests innerhalb des Test-Artefakts Unit-Tests aus, aber diese Fehler schlagen fehl mit dem Fehler: "java.lang.IllegalStateException: Keine Instrumentierung registriert! Muss unter einer registrierenden Instrumentierung ausgeführt werden."Android Studio-Einheit Testkonfiguration

Ich suche nach einer Möglichkeit, die gleiche Konfiguration auszuführen, die ausgeführt wird, wenn Sie mit der rechten Maustaste auf den com.foo.android (test) klicken und in Android Studio "Tests in 'com.foo.android' ausführen"? Ich möchte das zu Jenkins bringen. Oder Sie können die Konfiguration verwenden, die ich manuell in AS erstellt habe.

Dank

[EDIT] Wenn ich die reinen junit Unit-Tests und Messtests in ihre jeweiligen Artefakte dann trennen verliere ich die Möglichkeit, die UI-Tests auf eigene Faust zu laufen, ist es eine Möglichkeit, diese um ? Ich habe eine Konfiguration, die nur das UITest-Paket ausführt, aber nicht weiß, wie diese Konfiguration über die Befehlszeile ausgeführt wird.

+1

Sie haben Tests instrumentiert (z Espresso-Tests) oder nur reine Java-Junit-Tests? –

+0

Mix von beiden, sie sind auch nicht alle getrennt, einige sind innerhalb der gleichen Klassen – CroatianBlackhawk

+0

Haben Sie einen 'testInstrumentationRunner' in Ihrem Build.gradle konfiguriert? –

Antwort

0

Sehen Sie, wenn diese helfen android Unit-Tests von der Kommandozeile ausgeführt wird:

adb shell am instrument -w <package>/android.test.InstrumentationTestRunner 

Alle Testfälle im Sub-Paket Lauf:

adb shell am instrument -w <package>.<sub package>/android.test.InstrumentationTestRunner 

Einzeltestfall aus der Testklasse Rennen:

adb shell am instrument -w -e class <project>.<test class>#testCase 
<package>/android.test.InstrumentationTestRunner 
+0

dies wird für Pakete funktionieren, gibt es jedoch eine Möglichkeit, eine Konfiguration auszuführen, anstatt jedes Paket einzeln anzugeben? Wenn nicht, könnte ich wahrscheinlich nur ein Paket speziell für unitTests, InstrumentationTests und UITests erstellen. – CroatianBlackhawk

0

Der beste Weg, den ich gefunden habe, ist es, alle meine UITests in einem Paket zu haben nd wenn ich nur Unit-Tests ausführen möchten laufen:

adb shell am instrument -w -e notPackage com.foo.android.UITest com.foo.android.test/android.support.test.runner.AndroidJUnitRunner 

laufen alle Tests laufen:

adb shell am instrument -w com.foo.android.test/android.support.test.runner.AndroidJUnitRunner 

für nur UITest:

adb shell am instrument -w -e package com.foo.android.UITest com.foo.android.test/android.support.test.runner.AndroidJUnitRunner