Gradle - 没有 运行 connectedCheck 的 Jacoco 代码覆盖率

Gradle - Jacoco code coverage without running connectedCheck

我正在使用 Android Studio 1.2.2 和 Gradle 插件 1.2.3。

我正在尝试在 运行 宁 gradlew connectedCheck 的情况下生成代码覆盖率报告,只是 gradlew test。我想避免连接设备或模拟器的需要,这样我就可以加快在 Jenkins 服务器上的构建速度。

到目前为止我能做的最好的事情就是在报告中包含单元测试执行数据,如下所述:。这对于显示所有测试的结果很有用,但目前我只想 运行 单元测试(Junit4 和 Robolectric)。

有没有办法编辑 createDebugCoverageReport gradle 任务,使其不 运行 connectedAndroidTest

谢谢。

我设法找到了解决方法。即,禁用 connectedAndroidTest 任务。

project.afterEvaluate {
    def append = "append=true"
    def destFile = "destfile=$buildDir/outputs/code-coverage/connected/coverage.ec"
    testDebug.jvmArgs "-javaagent:$buildDir/intermediates/jacoco/jacocoagent.jar=$append,$destFile"

    createDebugCoverageReport.dependsOn testDebug
    connectedAndroidTestDebug.enabled = false
}

因此,从提议的解决方案 开始,我已禁用了仪器测试任务,该解决方案将单元测试覆盖率添加到仪器测试覆盖率。这允许我通过执行 createDebugCoverageReport 任务 运行 仅进行单元测试,而无需连接设备。

有一个开源插件可以做到这一点:jacoco-android-gradle-plugin

它基本上为每个变体运行单元测试并生成覆盖率报告。 project README.

中记录了用法