繁体   English   中英

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

[英]How to get jacoco code coverage report in gradle project

我是 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命令以在我的项目存储库下生成构建文件夹。

选项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
    }
}

为了生成覆盖率报告,您可以手动执行gralde jacocoTestReport

它会在build/reports/jacoco/test文件夹下生成报告

但是,我们希望在 gradle 测试任务之后执行覆盖率报告。

因此,要实现这一点,请在 gradle 文件中添加以下条目。 test.finalizedBy(jacocoTestReport)

现在,即使您执行gradle testgradle clean build (将隐式调用 test),您仍然会看到 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM