将 jacoco 与 Gradle 一起使用

Using jacoco with Gradle

如果测试失败,Jacoco 将无法生成代码覆盖率报告。

以下是我的 gradle 文件的相关部分:

task unitTest(type: Test) {
    forkEvery = 1
    jvmArgs = ['-Djava.net.preferIPv4Stack=true']
    testClassesDir = sourceSets.unitTest.output.classesDir
    classpath = sourceSets.unitTest.runtimeClasspath
    exclude '**/**TestBase.*'
    outputs.upToDateWhen { false }
    ignoreFailures = true
    finalizedBy jacocoTestReport
}

task functionalTest(type: Test) {
    forkEvery = 1
    jvmArgs = ['-Djava.net.preferIPv4Stack=true']
    testClassesDir = sourceSets.functionalTest.output.classesDir
    classpath = sourceSets.functionalTest.runtimeClasspath
    exclude '**/**TestBase.*'
    outputs.upToDateWhen { false }  
}


jacocoTestReport {
    group = "Reporting"
    description = "Generate Jacoco coverage reports after running tests."

    additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
    reports {
        xml.enabled false
        csv.enabled false
        html.destination "${buildDir}/reports/jacoco/html"
    }   
    executionData = files('build/jacoco/test.exec')
}

虽然我指定了"ignoreFailures=true",但测试后没有代码覆盖率报告运行。

There were failing tests. See the report at: file:///unitTest/index.html
:MYModule:jacocoTestReport SKIPPED

BUILD SUCCESSFUL

Total time: 41 mins 34.018 secs

问题是 executionData 指向错误 "test.exec"。它应该是 "unitTest.exec",以正在执行的测试任务命名。