
[英]How do I access resources from my application inside of an androidTest (instrumented test) test class?
[英]How Do I Stop Gradle Instrumented Test Runs From Uninstalling the App?
如果我:
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.