我是 Groovy gradle 世界的新手,我已经编写了带有所有测试用例的小型 Groovy 项目。我正在尝试使用 jacoco 插件生成代码覆盖率报告。但它只生成测试报告而不生成代码覆盖率报告。请找到我的 jacoco gradle 文件配置。我正在使用 gradle 4.5 版本 和 Groovy 版本:2.5.0-rc-2 JVM:1.8.0_171 供应商:Oracle Corporation 操作系统:Windows 10
为了生成 html 格式的 jacoco 代码覆盖率报告,我在这里缺少什么。
提前感谢您的帮助!
我的jacoco.gradle
apply plugin: "jacoco"
jacoco {
toolVersion = '0.8.1'
}
jacocoTestReport {
group = "reporting"
description = "Generate Jacoco coverage reports after running tests."
reports {
xml.enabled true
html.enabled true
csv.enabled false
html.destination "${buildDir}/jacocoHtml"
}
sourceDirectories = fileTree(dir: 'src/main/myproject')
}
我正在运行
gradle clean build
命令在我的项目存储库下生成 build 文件夹。
选项1
运行
gradle build jacocoTestReport
生成 JaCoCo 代码覆盖率报告。
选项2.1
使任务依赖于您的 Gradle 脚本:
build.dependsOn jacocoTestReport
然后运行
gradle build
。 JaCoCo 报告将在每次 build
任务执行时生成。
选项2.2(由Filip Malczak提出)
添加到您的 Gradle 脚本中:
test.doLast jacocoTestReport.&execute
它的工作方式与前一个选项类似,但在每次执行
test
任务后生成报告。如果您倾向于通过运行 test
而不是 build
来工作,它会很有用。
我的解决方案基于Gradle 7.3.2
所以,首先,将 Jacoco 插件应用到你的 gradle 项目中。下面应该位于您的 build.gradle 文件中。如果您已经有插件部分,则只需在单独的行中添加条目
id 'jacoco'
即可
plugins {
id 'jacoco'
}
这公开了一个名为 jacocoTestReport 和 jacocoTestCoverageVerification 的任务。您可以选择配置任务以覆盖默认值。例如下面的代码还将生成覆盖率的 xml 报告,SonarQube 主要需要该报告来分析代码覆盖率。
jacocoTestReport {
reports {
xml.required = true
}
}
为了生成覆盖率报告,您可以执行
gradle jacocoTestReport
手动它将生成报告
build/reports/jacoco/test
文件夹但是,我们希望在 gradle 测试任务之后执行覆盖率报告。
因此,要实现此目的,请在 gradle 文件中添加以下条目。 test.finalizedBy(jacocoTestReport)
现在,即使您执行
gradle test
或
gradle clean build
(测试将被隐式调用),您仍然会看到 jacocoTestReport 任务正在执行并生成报告。下面是jacoco生成的报告树结构。
build/reports/jacoco
└── test
├── html
│ ├── index.html
│ ├── jacoco-resources
│ │ ├── branchfc.gif
│ │ ├── branchnc.gif
│ │ ├── branchpc.gif
│ │ ├── bundle.gif
│ │ ├── class.gif
│ │ ├── down.gif
│ │ ├── greenbar.gif
│ │ ├── group.gif
│ │ ├── method.gif
│ │ ├── package.gif
│ │ ├── prettify.css
│ │ ├── prettify.js
│ │ ├── redbar.gif
│ │ ├── report.css
│ │ ├── report.gif
│ │ ├── session.gif
│ │ ├── sort.gif
│ │ ├── sort.js
│ │ ├── source.gif
│ │ └── up.gif
│ └── jacoco-sessions.html
└── jacocoTestReport.xml