我使用的是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
?
谢谢。
答案 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中。