簡體   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