将 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",以正在执行的测试任务命名。
如果测试失败,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",以正在执行的测试任务命名。