Jof*_*rey 28
该功能现已推出.您只需要应用Gradle JaCoCo插件并定义覆盖验证,如下所示:
apply plugin: 'jacoco'
jacocoTestCoverageVerification {
    violationRules {
        rule {
            limit {
                minimum = 0.7
            }
        }
    }
}
// to run coverage verification during the build (and fail when appropriate)
check.dependsOn jacocoTestCoverageVerification
Run Code Online (Sandbox Code Playgroud)
最后一行非常重要,因为除非您明确运行jacocoTestCoverageVerification任务,否则构建将不会失败.
在 Android 应用程序中,此配置有效:
项目:构建.gradle
buildscript {
    repositories {
        google()
        jcenter()
        maven { url 'https://plugins.gradle.org/m2/' }
    }
    dependencies {
        classpath "com.android.tools.build:gradle:3.1.4"
        classpath "org.jacoco:org.jacoco.core:0.8.2"
    }
}
Run Code Online (Sandbox Code Playgroud)
应用程序:构建.gradle
ext.jacoco_version = '0.8.2'
def configDir = "${project.rootDir}/config"
def reportDir = "${project.buildDir}/reports"
def mainSrc = "$project.projectDir/src/main/java"
def fileFilter = ['**/R.class', '**/R$*.class', '**/BuildConfig.*', '**/Manifest*.*', '**/*Test*.*', 'android/**/*.*']
def debugTree = fileTree(dir: "$project.buildDir/intermediates/classes/debug", excludes: fileFilter)
//Jacoco jacocoTestReport
apply plugin: 'jacoco'
jacoco.toolVersion = jacoco_version
task jacocoTestReport(type: JacocoReport, dependsOn: 'testDebugUnitTest') {
    reports {
        xml.enabled = false
        html.enabled = true
    }
    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = fileTree(dir: project.buildDir, includes: [
            'jacoco/testDebugUnitTest.exec', 'outputs/code-coverage/connected/*coverage.ec'
    ])
}
task jacocoTestCoverageVerification(type: JacocoCoverageVerification, dependsOn: 'jacocoTestReport') {
    sourceDirectories = files([mainSrc])
    classDirectories = files([debugTree])
    executionData = files("${buildDir}/jacoco/testDebugUnitTest.exec")
    violationRules {
        failOnViolation = true
        rule {
            limit {
                minimum = 0.7
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)
我们可以在命令行中执行它:
./gradlew jacocoTestCoverageVerification
Run Code Online (Sandbox Code Playgroud)
我使用了 gradle 包装器 4.4。
|   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           25219 次  |  
        
|   最近记录:  |