您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如果JUnit覆盖率低于特定阈值,如何使Maven构建失败

如果JUnit覆盖率低于特定阈值,如何使Maven构建失败

JaCoCo 提供该功能

定义JaCoCo插件使用配置规则COVEREDRATIOLINEBRANCH

<plugin>
  <groupId>org.jacoco</groupId>
  <artifactId>jacoco-maven-plugin</artifactId>
  <version>0.7.7.201606060606</version>
  <executions>
    <execution>
      <id>default-prepare-agent</id>
      <goals>
        <goal>prepare-agent</goal>
      </goals>
    </execution>
    <execution>
      <id>check</id>
      <goals>
          <goal>check</goal>
      </goals>
      <configuration>
        <rules>
          <rule>
            <element>CLASS</element>
            <limits>
              <limit>
                <counter>LINE</counter>
                <value>COVEREDRATIO</value>
                <minimum>0.80</minimum>
              </limit>
              <limit>
                <counter>BRANCH</counter>
                <value>COVEREDRATIO</value>
                <minimum>0.80</minimum>
              </limit>
            </limits>
            <excludes>
              <exclude>com.xyz.ClassToExclude</exclude>
            </excludes>
          </rule>
        </rules>
      </configuration>
    </execution>
  </executions>
</plugin>

支持counter选项有:

我相信INSTRUCTION您可以进行一般检查(例如,验证整个项目的覆盖率至少为0.80)。

指令示例-整体指令覆盖率80%

本示例要求整个指令的覆盖率为80%,并且不得错过任何课程:

<rules>
  <rule implementation="org.jacoco.maven.RuleConfiguration">
    <element>BUNDLE</element>
    <limits>
      <limit implementation="org.jacoco.report.check.Limit">
        <counter>INSTRUCTION</counter>
        <value>COVEREDRATIO</value>
        <minimum>0.80</minimum>
      </limit>
      <limit implementation="org.jacoco.report.check.Limit">
        <counter>CLASS</counter>
        <value>MISSEDCOUNT</value>
        <maximum>0</maximum>
      </limit>
    </limits>
  </rule>
</rules>

如果覆盖范围不符合预期,它将失败并显示以下消息:

[WARNING] Rule violated for class com.sampleapp.SpringConfiguration: lines covered ratio is 0.00, but expected minimum is 0.80
[WARNING] Rule violated for class com.sampleapp.Launcher: lines covered ratio is 0.33, but expected minimum is 0.80
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------

在上面的示例中,我设置了<exclude>com.xyz.ClassToExclude</exclude>。我认为您会发现需要添加许多排除项。项目通常包含许多无法测试/测试的类(Spring Configuration,Java Bean …)。您也许也可以使用正则表达式。

其他 2022/1/1 18:16:09 有541人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶