如何通过卸载应用程序停止 Gradle 插桩测试运行?
How Do I Stop Gradle Instrumented Test Runs From Uninstalling the App?
如果我:
- 创建一个全新的 Android Studio 3.5.1 项目(Kotlin,API 21,"Empty Activity" 模板)
- 运行 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
它不会卸载您的应用程序。
here描述的比较详细
仪器安装 2 个 APK:被测 APK 和带有测试代码的 APK。
它还会在尝试安装新的 APK 之前卸载这两个 APK,我不知道是否可以阻止卸载本身。
testApplicationId
仅更改带有测试代码的 APK 的应用程序 ID(通常与附加“.test”的主 APK 相同)被测 APK 的应用程序 ID 仍然是相同的。但是可以为被测 APK 创建单独的 buildType(具有与调试构建类型完全相同的配置)并使用它。
然后 connectedAndroidXYZTest
可用于 运行 测试(或 createXYZCoverageReport
)。
connectedCheck
任务的类型为 DeviceProviderInstrumentTestTask
。对于在一台设备上的简单测试 运行,它使用 SimpleTestRunner
,其中
turn 使用 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
}
我不太确定我是否找到了最新的实现,但这种确切的行为可以追溯到几年前。所以我猜你无法实现你的要求。
如果我:
- 创建一个全新的 Android Studio 3.5.1 项目(Kotlin,API 21,"Empty Activity" 模板)
- 运行 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
它不会卸载您的应用程序。
here描述的比较详细
仪器安装 2 个 APK:被测 APK 和带有测试代码的 APK。
它还会在尝试安装新的 APK 之前卸载这两个 APK,我不知道是否可以阻止卸载本身。
testApplicationId
仅更改带有测试代码的 APK 的应用程序 ID(通常与附加“.test”的主 APK 相同)被测 APK 的应用程序 ID 仍然是相同的。但是可以为被测 APK 创建单独的 buildType(具有与调试构建类型完全相同的配置)并使用它。
然后 connectedAndroidXYZTest
可用于 运行 测试(或 createXYZCoverageReport
)。
connectedCheck
任务的类型为 DeviceProviderInstrumentTestTask
。对于在一台设备上的简单测试 运行,它使用 SimpleTestRunner
,其中
turn 使用 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
}
我不太确定我是否找到了最新的实现,但这种确切的行为可以追溯到几年前。所以我猜你无法实现你的要求。