2015-06-10 15 views
12

Quando eseguo test di strumentazione da Android Studio, vedo che l'app rimane sul dispositivo in seguito. Ma non riesco a capire di farlo dalla riga di comando con gradlew. La mia intenzione è di eseguire test che salvino screenshot in e.g/data/data/MyApp/cache/screenshots e di scaricarli successivamente con adb pull.Esegui test di automazione dell'interfaccia utente con gradle senza disinstallare

./gradlew connectedAndroidTest 

provoca la disinstallazione dell'app. Ho anche provato

./gradlew connectedAndroidTest -x uninstallAndroidTest 

ma ciò non ha fatto alcuna differenza. Che cosa sta causando la disinstallazione e come posso evitarlo?

risposta

15

Ho risolto questo problema lasciando che gradle compilasse l'apk e quindi gestendo il lavoro install/test/uninstall con adb. Ecco un'approssimazione del mio script.

 
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

Questo funziona come un fascino. Grazie –

+1

Come raccogliere un rapporto da questa esecuzione? –

+0

Stavo lavorando dalle 10:30 fino alle 1 del mattino successivo cercando di ottenere alcuni screenshot dal mio telefono. Quando ho letto questo, e ha funzionato, volevo baciarti! –

0

Non ho trovato la via d'uscita da questo problema. Sembra che non ci sia modo di eseguire test di strumentazione senza disinstallare. Puoi utilizzare i comandi gradle per creare e installare la tua app e testApp. È un modo migliore per usare questi commands perché le app saranno installate su tutti i dispositivi connessi.

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 

Ma c'è ancora un problema con i rapporti. È possibile utilizzare testRunner personalizzato per generare un report XML di stile JUnit. Tale rapporto potrebbe essere convertito in formato HTML con un approccio comune.

Problemi correlati