我试图从 jacoco 覆盖范围中排除整个包,但它不起作用。
我已按照此答案中报告的说明进行操作 Filter JaCoCo coverage reports with Gradle ,但它似乎对我不起作用。
这是代码:
jacocoTestReport {
reports {
xml.enabled false
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['it.unibo.distributedBLS.main/**'])
})
}
}
我也尝试过类似排除 += 的变体,写作
'**/it.unibo.distributedBLS.main/**'
也可以通过添加
test {
jacoco {
excludes += ['it.unibo.distributedBLS.main/**',
}
}
但还是不行。
我不清楚的一件事是“目录:它”代表什么:我应该放在那里什么?难道是那个错误?
最佳答案
这是对我有用的(至少对于 html,而不是 xml 报告)。我在进行一些小调整并重新运行我的构建时偶然发现了它。现在有点道理,但不是很直观。
注意我是如何在 test.jacoco
中定义我的包的,以及如何将它们从 jacocoTestReport.afterEvaluate
test {
finalizedBy jacocoTestReport
jacoco {
excludes += ["**/com.mypackage.things/**","**/com.mypackage.entity/**"]
}
}
jacocoTestReport {
reports {
xml.enabled true
csv.enabled false
html.enabled false
xml.destination "${buildDir}/reports/jacoco"
}
afterEvaluate {
classDirectories = files(classDirectories.files.collect {
fileTree(dir: it,
exclude: ['**/com/mypackage/things/**',
'**/com/mypackage/entity/**'])
})
}
}
我为 Sonarqube 生成了 XML,但在我重新运行以查看包是否被删除时,我暂时将其切换为 HTML。在某些时候,我注意到 com.mypackage.entity
被排除在外,但 com.mypackage.things
没有。就在那时,我意识到我在报告中使用 /
定义了实体包,但正在使用 .
作为 things 包。
对于测试部分,在报告部分使用点符号更有意义,因为报告可能是在某种 html 目录结构中生成的,因此使用斜线符号更有意义。不确定如何为 XML 修复它。我猜是某种其他符号???
关于java - jacoco 测试报告不排除包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40196480/