2015-06-10 16 views
12

Po uruchomieniu testów instrumentacji z poziomu Android Studio widzę, że aplikacja pozostaje później na urządzeniu. Ale nie mogę wymyślić, aby to zrobić z linii poleceń z gradlew. Moim zamiarem jest uruchomienie testów, które zapisują zrzuty ekranu w plikach/data/data/MyApp/cache/screenshots i pobranie ich później za pomocą adb pull.Uruchamiaj testy automatyzacji interfejsu użytkownika z gradle bez odinstalowywania

./gradlew connectedAndroidTest 

powoduje odinstalowanie aplikacji. Spróbowałem także

./gradlew connectedAndroidTest -x uninstallAndroidTest 

ale to nie miało żadnej różnicy. Co powoduje deinstalację i jak mogę tego uniknąć?

Odpowiedz

15

Rozwiązałem to, pozwalając gradle tylko budować pakiet APK, a następnie obsługiwać instalację/testowanie/odinstalowywanie z użyciem narzędzia adb. Oto przybliżenie mojego skryptu.

 
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

Działa to jak urok. Dziękujemy –

+1

Jak zebrać raport z tej realizacji? –

+0

Pracowałem od 10:30 rano do 1 nad ranem, próbując usunąć z telefonu kilka zrzutów ekranu. Kiedy to przeczytałem i zadziałało, chciałem cię pocałować! –

0

Nie znalazłem wyjścia z tego problemu. Wygląda na to, że nie ma sposobu na uruchomienie testu oprzyrządowania bez odinstalowania. Możesz używać poleceń gradle do budowania i instalowania aplikacji i testApp. Jest to lepszy sposób korzystania z tych wtyczek, ponieważ aplikacje będą instalowane na wszystkich podłączonych urządzeniach.

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 

Ale nadal występuje problem z raportami. Możesz użyć niestandardowego testRunner do wygenerowania raportu XML w stylu JUnit. Taki raport może zostać przekonwertowany do formatu HTML przy użyciu wspólnego podejścia.

Powiązane problemy