如何在gradle项目中获取jacoco代码覆盖率报告

问题描述 投票:0回答:2

我是 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 文件夹。

gradle groovy code-coverage jacoco
2个回答
11
投票

选项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
来工作,它会很有用。


4
投票

我的解决方案基于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
    
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.