我是新手。我正在使用下面的代码。但它会生成单元测试用例的覆盖率。但它没有为集成测试用例生成。我的测试类在包 src/test/java 中。
test {
dependsOn jettyRunWar
ignoreFailures true
finalizedBy jettyStop
}
apply plugin: 'jacoco'
jacocoTestReport {
group = "Reporting"
description = "Generate Jacoco coverage reports after running tests."
additionalSourceDirs = files(sourceSets.main.allJava.srcDirs)
}
原文由 Veera 发布,翻译遵循 CC BY-SA 4.0 许可协议
EDIT4 : Gradle 7.4 RC1 发行说明 表明 gradle 现在可以为 JUnit 和 JaCoCo 生成单个报告文件。这将避免下面解释的脆弱配置。
您所要做的就是应用相关插件
test-report-aggregation
jacoco-report-aggregation
目前的缺点 (7.4 RC1) 是只支持 HTML 报告。并且这些聚合任务与 JVM 测试套件插件 协同工作(但由
java
插件自动添加)。因此,请在下一个版本中关注此功能。
使用 Gradle 5.4.1(现在是 5.5.1),我能够在完成任何测试任务后获得报告,目前我同时拥有
test
和integrationTest
任务。EDIT3 :修复了仅执行某些测试任务时的潜在错误
doLast
/doFirst
块中配置executionData
块,这是我的错误。有关更多信息,请查看此 gradle github 票证doLast
/doFirst
块中)executionData { tasks.withType(Test).findAll { it.jacoco.destinationFile.exists() }*.jacoco.destinationFile }
EDIT2 :解决方案是一样的,我只是调整了
jacoco.reportsDir
,tasks.withType(Test)
而不仅仅是[test, integrationTest]
executionData
是在doFirst
块而不是doLast
编辑:查看
JacocoReport
的文档后,有一个变体 JacocoReport:executionData 直接执行 Gradle 任务。它的工作原理是因为 JaCoCo 插件添加了一个JacocoTaskExtension
扩展到所有类型的任务Test
。这样就不容易出错。同样的技巧可以应用于
sonarqube
任务:较旧但非常有效的答案。 Also using the knowledge above (that
Test
s task are extended byJacocoTaskExtension
) it’s possible to replace the manualfile
configuration ofexecutionData
bytest.jacoco.destinationFile
和integrationTest.jacoco.destinationFile
。