繁体   English   中英

如何阻止 Gradle 仪表化测试运行卸载应用程序?

[英]How Do I Stop Gradle Instrumented Test Runs From Uninstalling the App?

如果我:

  • 创建一个全新的Android Studio 3.5.1项目(Kotlin,API 21,“空活动”模板)
  • 从 IDE 内部运行应用程序
  • 确认应用程序已安装并具有启动器图标
  • 运行connectedAndroidDebugTest Gradle 任务(从 Android Studio 内部或通过gradlew

该应用程序最终被测试运行卸载。 即使我将testApplicationId值添加到defaultConfig以使测试代码使用不同的应用程序 ID,我也会得到这种行为。

我该如何阻止这种行为? 如何在不干扰现有应用程序安装的情况下从命令行运行检测测试?

也许尝试像这样通过adb运行它:

adb shell am instrument -w com.android.demo.app.tests/android.support.test.runner.AndroidJUnitRunner

它不会卸载您的应用程序。

这里有更详细的描述。

仪器安装 2 个 APK:被测 APK 和带有测试代码的 APK。

它还会在尝试安装新的 APK 之前卸载这两个 APK,我不知道是否可以阻止卸载本身。

testApplicationId仅更改带有测试代码的 APK 的应用程序 ID(通常与附加“.test”的主 APK 相同),被测 APK 的应用程序 ID 保持不变。 但是可以为被测 APK 创建单独的 buildType(与调试构建类型的配置完全相同)并使用它。

然后connectedAndroidXYZTest可用于运行测试(或createXYZCoverageReport )。

connectedCheck任务的类型为DeviceProviderInstrumentTestTask 对于在一台设备上运行的简单测试,它使用SimpleTestRunner ,而后者又使用SimpleTestRunnable来实际执行测试。 在这里你可以找到一个结构

try {
    // connect to device
    // install all APKs
    // run tests
} catch(Exception e) {
    // handle error
} finally {
    // get test report
    // uninstall all APKs
    // disconnect from device
}

我不确定我是否找到了最新的实现,但这种确切的行为可以追溯到几年前。 所以我想你无法实现你所要求的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM