使用 Gradle 运行仪器测试,同时跳过构建和安装

问题描述 投票:0回答:1

有没有一种方法可以使用 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 完成了。

android unit-testing android-gradle-plugin adb instrumented-test
1个回答
0
投票

正如您所提到的,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
中不再可用,因此您必须将其作为源代码添加到您的项目中(尊重作者选择的许可证,如果有)。

希望这有帮助

© www.soinside.com 2019 - 2024. All rights reserved.