【问题标题】:Run UI automation tests with gradle without uninstalling使用 gradle 运行 UI 自动化测试,无需卸载
【发布时间】:2015-06-10 12:16:38
【问题描述】:

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

./gradlew connectedAndroidTest

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

./gradlew connectedAndroidTest -x uninstallAndroidTest

但这并没有什么不同。卸载的原因是什么,如何避免?

【问题讨论】:

    标签: android gradle android-uiautomator


    【解决方案1】:

    我解决了这个问题,让 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 仪器 -w ${PKGNAME}.test/android.support.test.runner.AndroidJUnitRunner [ -d 截图 ] || mkdir 截图 adb pull /data/data/${PKGNAME}/cache/screenshots 截图 # 现在我们可以卸载了。 adb 卸载 ${PKGNAME}.test adb 卸载 ${PKGNAME}

    【讨论】:

    • 如何从这次执行中收集报告?
    • 我从上午 10:30 工作到第二天凌晨 1 点,试图从我的手机上截取一些屏幕截图。当我读到这篇文章时,它奏效了,我想吻你!
    【解决方案2】:

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

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

    【讨论】:

    • 多年后,这仍然是一个痛苦的-----。有没有人真的希望测试批次卸载应用程序(并丢弃它的数据和设置?)?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-12
    • 2014-08-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多