Подтвердить что ты не робот

Запуск тестов автоматизации пользовательского интерфейса с помощью gradle без удаления

Когда я запускаю контрольные тесты из Android Studio, я вижу, что приложение остается на устройстве позже. Но я не могу понять, как это сделать из командной строки с помощью gradlew. Мое намерение заключается в том, чтобы запускать тесты, которые сохраняют скриншоты в файлах/данных/данных/MyApp/кеш/скриншоты и затем загружать их с помощью adb pull.

./gradlew connectedAndroidTest

приводит к удалению приложения. Я также пробовал

./gradlew connectedAndroidTest -x uninstallAndroidTest

но это не имело никакого значения. Что вызывает удаление и как его избежать?

4b9b3361

Ответ 1

Я решил это, разрешив gradle только строить apk, а затем обрабатывать работу install/test/uninstall с помощью adb. Здесь приближение моего 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}

Ответ 2

Я не нашел выход из этой проблемы. Похоже, нет возможности запустить контрольно-измерительный тест без деинсталляции. Вы можете использовать команды gradle для сборки и установки вашего приложения и testApp. Это лучший способ использовать эти commamds, потому что приложения будут установлены на всех подключенных устройствах.

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

Но проблема с отчетами остается. Вы можете использовать собственный testRunner для создания XML-отчета стиля JUnit. Такой отчет можно преобразовать в формат HTML с общим подходом.