Gradle - Jacoco代码覆盖,无需运行connectedCheck

时间:2015-07-27 12:33:22

标签: android unit-testing code-coverage jacoco

我使用的是Android Studio 1.2.2和Gradle插件1.2.3。

我尝试生成代码覆盖率报告而不运行gradlew connectedCheck,只是gradlew test。我想避免使用连接的设备或模拟器,因此我可以加快Jenkins服务器上的构建。

我能够做到的最好的事情是在报告中包含单元测试执行数据,如下所述:Jacoco Code Coverage in android studio。这对于显示所有测试的结果非常有用,但目前我只想运行单元测试(Junit4和Robolectric)。

有没有办法编辑createDebugCoverageReport gradle任务,以便它不会运行connectedAndroidTest

谢谢。

2 个答案:

答案 0 :(得分:1)

我设法找到了解决方法。即,禁用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
}

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

答案 1 :(得分:0)

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

基本上,它为每个变体运行单元测试并生成覆盖率报告。用法记录在project README中。