我们有一个使用Gradle构建工具的Java项目。我们使用jacoco插件来生成测试覆盖报告。后来,我们使用Gradle的JVM测试套件插件添加了测试套件。我们已经观察到,所有那些由测试套件运行的测试类都没有被jacoco的代码覆盖报告所覆盖。所以如果有人知道我应该在build.gradle文件中写些什么来完成这个任务,那就太好了。谢谢
这是build.gradle文件片段:-
plugins {
id 'java'
id 'jacoco'
id 'jvm-test-suite'
}
test {
useJUnitPlatform()
finalizedBy jacocoTestReport
}
testing {
suites {
test {
useJUnitJupiter()
}
customTest(JvmTestSuite) {
dependencies {
... // some dependencies
}
}
}
}
tasks.named('check') {
dependsOn(testing.suites.customTest)
}
dependencies {
... // some other dependencies
}
jacocoTestReport {
dependsOn test
reports {
xml.required = true
}
}
2条答案
按热度按时间m1m5dgzv1#
请参阅新的JaCoCo Report Aggregation Plugin和aggregation related Samples(在Java标题下),了解如何在多个测试套件中合并覆盖率的信息。
von4xj4u2#
考虑到您已经定义了一个额外的测试套件(
integrationTest
)并添加了jacoco插件,如下所示:每次执行
test
或integrationTest
时,都会在build/(test|integrationTest).exec
上创建相应的jacoco exec文件现在要获取html报告(或xml/csv报告,取决于您在
tasks.jacocoTestReport {...}
块中请求的报告),jacoco
插件添加了jacocoTestReport
任务,该任务将.exec
文件转换为其他格式。jacocoTestReport
假设只有一个名为test
的默认测试套件,因此只考虑build/jacoco/test.exec
。至于现在(Gradle 8.1.1),将
jacoco-report-aggregation
plugin添加到构建中将自动创建相应的任务,以将.exec
覆盖率数据转换为您声明的任何其他测试套件的其他格式。在我的示例中,在应用id("jacoco-report-aggregation")
之后,我将自动获取integrationTestCodeCoverageReport
任务,该任务将负责将build/jacoco/integrationTest.exec
转换为html和/或其他格式。最后,如果我想有一个html格式的聚合覆盖率报告,我需要使用
testCodeCoverageReport
任务,这也是通过在构建中引入jacoco-report-aggregation
带来的。根据描述(“生成聚合代码覆盖率报告”),此任务的目标正是报告聚合。但是你需要在使用之前调整它的配置,这样它才能知道你的自定义测试套件:现在,要获得HTML格式的单个聚合覆盖率报告,请执行
./gadlew test integrationTest testCodeCoverageReport