2015-06-10 12 views
12

Wenn ich Instrumentierungstests innerhalb von Android Studio ausführen, sehe ich, dass die App danach auf dem Gerät bleibt. Aber ich kann nicht herausfinden, dies von der Kommandozeile mit Gradlew zu tun. Meine Absicht ist es, Tests durchzuführen, die Screenshots in z. B./data/data/MyApp/cache/screenshots speichern und diese anschließend mit adb pull herunterladen.Ausführen von UI-Automatisierungstests mit Gradle ohne Deinstallation

./gradlew connectedAndroidTest 

bewirkt, dass die App deinstalliert wird. Ich versuchte auch

./gradlew connectedAndroidTest -x uninstallAndroidTest 

aber das machte keinen Unterschied. Was verursacht die Deinstallation und wie kann ich sie vermeiden?

Antwort

15

Ich löste das, indem ich graptle nur die apk bauen, und dann die Installation/test/uninstall Arbeit mit adb. Hier ist eine Annäherung an mein Skript.

 
PKGNAME=com.corp.app 
./gradlew assembleAndroidTest 
adb install -r app/build/outputs/apk/app-debug.apk 
adb install -r app/build/outputs/apk/app-debug-androidTest-unaligned.apk 

adb shell am instrument -w ${PKGNAME}.test/android.support.test.runner.AndroidJUnitRunner 

[ -d screenshots ] || mkdir screenshots 
adb pull /data/data/${PKGNAME}/cache/screenshots screenshots 

# Now we can uninstall. 
adb uninstall ${PKGNAME}.test 
adb uninstall ${PKGNAME} 
+0

Das funktioniert wie ein Zauber. Danke –

+1

Wie sammle ich Bericht von dieser Ausführung? –

+0

Ich arbeitete von 10:30 bis 1:00 Uhr am nächsten Morgen und versuchte ein paar Screenshots von meinem Handy zu bekommen. Als ich das las und es funktionierte, wollte ich dich küssen! –

0

Ich habe den Ausweg aus diesem Problem nicht gefunden. Es sieht so aus, als ob es keine Möglichkeit gibt, den Instrumentierungstest ohne Deinstallation durchzuführen. Sie können gradle-Befehle verwenden, um Ihre App und testApp zu erstellen und zu installieren. Es ist eine bessere Möglichkeit, diese Commamds zu verwenden, da Apps auf allen verbundenen Geräten installiert werden.

gradlew installVersionDebug 
gradlew installVersionDebugAndroidTest 
adb shell am instrument -w -r -e debug false -e class com.example.android.EspressoUITest {PKGNAME}.test/android.support.test.runner.AndroidJUnitRunner 

Aber es gibt immer noch ein Problem mit Berichten. Sie können den benutzerdefinierten TestRunner verwenden, um einen JUnit-XML-Bericht zu generieren. Ein solcher Bericht könnte mit einem gemeinsamen Ansatz in das HTML-Format konvertiert werden.

Verwandte Themen