【问题标题】:How to get jacoco code coverage report in gradle project如何在 gradle 项目中获取 jacoco 代码覆盖率报告
【发布时间】:2018-05-22 15:35:11
【问题描述】:

我是 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


    【解决方案1】:

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

    【讨论】:

    • 替代选项#2 - 添加test.doLast jacocoTestReport.&execute - 以类似的方式工作,但在每次执行test 后生成报告。如果您倾向于通过运行test 而不是build 来工作并且我个人更喜欢它,这可能会很有用。 @VaL - 随意编辑你的答案并添加它,这仍然是你的答案,我只是建议。
    • 最后一个选项对我不起作用">没有方法签名:org.gradle.testing.jacoco.tasks.JacocoReport_Decorated.execute() 适用于参数类型:() 值:[ ] "
    【解决方案2】:

    我的解决方案基于 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(将隐式调用测试),您仍然会看到正在执行的 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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-02-25
      • 1970-01-01
      • 1970-01-01
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 2014-07-21
      相关资源
      最近更新 更多