Ger*_*EVI 7 gradle sonarqube jacoco-plugin
我正在将我的项目迁移到 Gradle 7.4,我想使用新的插件 jacoco-report-aggregation 来生成完美合并的单元和集成测试覆盖率报告以发送到 sonarqube。
我在每个子项目上使用 jvm 测试套件。
在此之前,我曾经在每个子项目中手动合并 exec 文件,效果很好
因此,我创建了两个任务: testCodeCoverageReport 和integrationTestCodeCoverageReport 针对 TestSuiteType.UNIT_TEST 和 TestSuiteType.INEGRATION_TEST testType,并将报告发送给 sonarqube。
我的配置:
plugins {
id "org.sonarqube" version "3.3"
id "org.owasp.dependencycheck" version "6.4.1.1"
id 'org.springframework.boot' version "$springBootVersion"
// Aggregating code coverage with JaCoCo
id 'jacoco-report-aggregation'
}
dependencies {
jacocoAggregation project(':subproject1')
jacocoAggregation project(':subproject2')
}
reporting {
reports {
testCodeCoverageReport(JacocoCoverageReport) {
testType = TestSuiteType.UNIT_TEST
}
integrationTestCodeCoverageReport(JacocoCoverageReport) {
testType = TestSuiteType.INTEGRATION_TEST
}
}
}
project.tasks["sonarqube"].dependsOn tasks.named('testCodeCoverageReport', JacocoReport)
project.tasks["sonarqube"].dependsOn tasks.named('integrationTestCodeCoverageReport', JacocoReport)
sonarqube.properties {
property "sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/jacoco/testCodeCoverageReport/testCodeCoverageReport.xml,$buildDir/reports/jacoco/integrationTestCodeCoverageReport/integrationTestCodeCoverageReport.xml"
}
Run Code Online (Sandbox Code Playgroud)
但计算出的覆盖率并不好。理想情况下,报告会在发送到 sonarqube 之前合并。
有可能做一些看起来像这样的事情吗?
reporting {
reports {
perfectMergeUnitAndIntegrationCodeCoverageReport(JacocoCoverageReport) {
testTypes = [TestSuiteType.UNIT_TEST, TestSuiteType.INTEGRATION_TEST]
}
}
}
project.tasks["sonarqube"].dependsOn tasks.named('perfectMergeUnitAndIntegrationCodeCoverageReport', JacocoReport)
sonarqube.properties {
property "sonar.coverage.jacoco.xmlReportPaths", "$buildDir/reports/jacoco/perfectMergeUnitAndIntegrationCodeCoverageReport/perfectMergeUnitAndIntegrationCodeCoverageReport.xml"
}
Run Code Online (Sandbox Code Playgroud)
感谢您的回答
And*_*rew -1
reporting {
reports {
testCodeCoverageReport(JacocoCoverageReport) {
testType = TestSuiteType.UNIT_TEST
jacocoTestCoverageVerification {
afterEvaluate {
getClassDirectories().setFrom(filesToExcludeFromCoverageReport)
}
dependsOn(test,integrationTest)
executionData.from = files("$buildDir/jacoco/test.exec", "$buildDir/jacoco/intergrationTest.exec")
violationRules {
rule {
limit {
minimum = 0.80
}
}
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1666 次 |
| 最近记录: |