运行 UI 使用 gradle 进行自动化测试,无需卸载

Run UI automation tests with gradle without uninstalling

当我从 Android Studio 中 运行 进行仪器测试时,我发现该应用程序之后仍保留在设备上。但我想不出用 gradlew 从命令行执行此操作。我的目的是 运行 测试将屏幕截图保存在 /data/data/MyApp/cache/screenshots 中,然后用 adb pull 下载这些。

./gradlew connectedAndroidTest

导致应用程序被卸载。我也试过了

./gradlew connectedAndroidTest -x uninstallAndroidTest

但这没有任何区别。导致卸载的原因是什么,我该如何避免?

我通过让 gradle 只构建 apk,然后使用 adb 处理 install/test/uninstall 来解决这个问题。这是我的脚本的近似值。

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}

我没有找到解决这个问题的方法。看起来没有卸载就无法 运行 检测测试。您可以使用 gradle 命令来构建和安装您的应用程序和测试应用程序。这是使用这些命令的更好方法,因为应用程序将安装在所有连接的设备上。

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 生成 JUnit 样式 XML 报告。此类报告可以通过通用方法转换为 HTML 格式。