在build.gradle文件中添加以下代码:
android {
...
buildTypes {
debug {
testCoverageEnabled true
}
}
}
dependencies {
...
androidTestImplementation('org.jacoco:org.jacoco.agent:0.8.7') {
// JaCoCo version might need to be changed to match the version
// used in other places (e.g. SonarQube)
exclude group: 'org.slf4j', module: 'slf4j-android'
}
}
jacoco {
toolVersion "0.8.7"
reportsDir file("$buildDir/reports")
}
tasks.withType(Test) {
jacoco.includeNoLocationClasses = true
}
task jacocoTestCoverageVerification(type: JacocoCoverageVerification) {
dependsOn 'testDebugUnitTest'
sourceDirectories.setFrom(files(android.sourceSets.debug.java.srcDirs))
classDirectories.setFrom(files("${buildDir}/intermediates/classes/debug"))
// Change minimum coverage percentage as desired
violationRules {
rule {
limit {
minimum = 0.8
}
}
}
}
注意:这个解决方法假设你使用的是JUnit和Robolectric进行单元测试,而不是Espresso进行UI测试。如果你使用Espresso,则应调整jacocoTestCoverageVerification任务中的依赖项。
最后,运行以下命令来运行Jacoco测试覆盖率验证任务:
./gradlew jacocoTestCoverageVerification