首页 文章

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

提问于
浏览
1

我正在使用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 回答

  • 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 任务来仅运行单元测试,而无需连接的设备 .

  • 0

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

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

相关问题