有没有一种方法可以使用 Android Gradle 插件运行仪器测试而无需运行构建任务和安装任务?由于非常具体的原因,我需要通过
adb
安装测试 APK,但是如果我使用 adb shell am instrument -w
进行检测,它不会生成像 ./gradlew cAT
那样的测试报告。
通过ADB安装
adb install app/build/outputs/apk/debug/app-debug.apk & adb install app/build/outputs/apk/androidTest/debug/app-debug-androidTest.apk
如果我的理解是正确的
./gradlew cAT
或 ./gradlew connectedAndroidTest
将构建并安装 APK。我只需要运行测试并获取其 HTML 报告,在 CI 管道中包含构建和安装任务将浪费构建分钟,而它已经通过 ADB 完成了。
正如您所提到的,AGP 的
connectedAndroidTest
任务会构建并安装执行检测测试所需的所有 apk。
代码的结构方式不允许您仅单独执行运行测试和构建 html 报告的最终任务,因为应用程序和测试 apk 都与
assembleTask
存在依赖关系:您可以从这里看到它。
我过去有类似的需求,我所做的是使用自定义测试侦听器,该侦听器在测试失败/通过时进行拦截,并以 junit xml 格式收集结果。然后您可以使用其他一些工具将其转换为 html。
我使用的监听器可以在
build.gradle
文件中指定
android {
defaultConfig {
...
testInstrumentationRunnerArgument "listener", "de.schroepf.androidxmlrunlistener.XmlRunListener"
}
}
或通过
adb
在执行仪器测试时添加以下参数:
-e listener de.schroepf.androidxmlrunlistener.XmlRunListener
上面的监听器参考在
jcenter
中不再可用,因此您必须将其作为源代码添加到您的项目中(尊重作者选择的许可证,如果有)。
希望这有帮助