Учитывая многомодульный проект, построенный с использованием Gradle 5.0 , я хочу применить все покрытие кода с использованием jacoco.Я могу установить контроль покрытия на уровне модуля.Но из-за характера зависимостей многие тесты написаны в модуле интеграции, который охватывает большую часть кода.Поэтому я хочу завершить сборку , только если общий охват кода не достигает определенного порогового значения.Ниже приведен мой build.gradle и сборка не завершается независимо от того, какое значение я установил для совокупного покрытия.
apply plugin: 'java'
apply plugin: 'jacoco'
subprojects {
apply plugin: 'java'
apply plugin: 'jacoco'
tasks.withType(JacocoReport).all {
reports {
html.enabled true
}
check.dependsOn it
}
jacocoTestReport {
executionData = fileTree("$buildDir/jacoco/test.exec")
subprojects.each {
sourceSets it.sourceSets.main
dependsOn it.test
}
}
jacocoTestCoverageVerification {
executionData fileTree("$buildDir/jacoco/test.exec")
violationRules {
rule {
limit {
counter = 'LINE'
minimum = 0.5 //individual module coverage level
}
failOnViolation true
}
}
}
tasks.build.dependsOn(jacocoTestReport)
tasks.build.dependsOn(jacocoTestCoverageVerification)
jacocoTestReport.mustRunAfter jacocoTestCoverageVerification
check.dependsOn jacocoTestCoverageVerification
}
//overall cumulative coverage report
task jacocoMergeTestReport(type: JacocoReport) {
executionData fileTree(project.rootDir.absolutePath).include('*/build/jacoco/*.exec')
subprojects.each {
sourceSets it.sourceSets.main
dependsOn it.test
}
reports {
html {
enabled true
destination rootProject.file("$rootProject.buildDir/reports/jacoco/html")
}
}
}
//overall cumulative coverage tasks
jacocoTestCoverageVerification {
def execFilesToInclude = subprojects.collect {
it.name+"build/jacoco/*.exec"
}
executionData fileTree(project.rootDir.absolutePath).include(execFilesToInclude)
violationRules {
rule {
element = 'CLASS'
limit {
counter = 'LINE'
minimum = 0.8 //no matter which value I set, build does not fail
}
failOnViolation true
}
}
}
tasks.build.dependsOn jacocoMergeTestReport
tasks.build.dependsOn jacocoTestCoverageVerification