如果代码覆盖率低于使用 jacoco 检查元素的阈值,则 Gradle jacoco 失败

Vij*_*jay 4 ant gradle jacoco

当 Jacoco 代码覆盖率低于某个百分比时,我试图使 Gradle Build 失败。

<jacoco:report>

    ...

    <check failonviolation="true">
        <rule element="PACKAGE">
            <limit counter="LINE" value="COVEREDRATIO" minimum="0.80"/>
            <limit counter="CLASS" value="MISSEDCOUNT" maximum="0"/>
        </rule>
    </check>

    ...

</jacoco:report>
Run Code Online (Sandbox Code Playgroud)

即使不能直接将这个 Ant 任务添加到 Gradle jacoco 插件,我该如何添加?

我看到了这个链接- http://forums.gradle.org/gradle/topics/how-to-fail-the-build-on-insufficient-code-coverage

TIA,

维杰

bar*_*uin 5

这最近有所改善,因为 Jacoco 覆盖验证已添加到 Gradle 3.4(问题 #824)!

在 Gradle 3.4 之前,您不得不求助于手工制作的解决方法,例如this

使用 Gradle 3.4 或更高版本,您可以使用标准 Jacoco 插件(例如 Gradle 4.0):

jacocoTestCoverageVerification {
    violationRules {
        rule {
            limit {
                minimum = 0.5
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

在上面的示例中,我们检查了 50% 的最小线路覆盖率。更复杂的违规规则是可能的,也可以组合多个违规规则。请参阅链接的文档。

为了运行如此配置的检查,我们得到了任务jacocoTestCoverageVerification。可以使用 来创建覆盖率报告jacocoTestReport。这些任务可以通过添加这样的东西来自动运行 (thx @Thunderforge):

test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport
Run Code Online (Sandbox Code Playgroud)

  • 请注意,除非您实际运行“jacocoTestCoverageVerification”任务,否则不会发生任何事情,并且它不会自动发生。此外,除非您运行 `jacocoTestReport`,否则您不会得到报告。也许将 `test.finalizedBy jacocoTestCoverageVerification, jacocoTestReport` 添加到代码的末尾? (2认同)