使用gradle运行UI自动化测试而不卸载

时间:2015-06-10 12:16:38

标签: android gradle android-uiautomator

当我在Android Studio中运行检测测试时,我发现该应用程序之后仍保留在设备上。但我无法通过gradlew命令行来解决这个问题。我的目的是运行在例如/ data / data / MyApp / cache / screenshots中保存屏幕截图的测试,然后使用adb pull下载这些屏幕截图。

./gradlew connectedAndroidTest

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

./gradlew connectedAndroidTest -x uninstallAndroidTest

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

2 个答案:

答案 0 :(得分:15)

我通过让gradle只构建apk,然后使用adb处理安装/测试/卸载工作来解决这个问题。这是我的剧本的近似值。

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}

答案 1 :(得分:0)

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

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格式。