我从声纳休息API获取单元测试覆盖率百分比指标。
如果构建低于定义值,如何使构建失败?
JaCoCo
提供该功能。
定义JaCoCo插件使用配置规则COVEREDRATIO
的LINE
和BRANCH
:
<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 …)。您也许也可以使用正则表达式。
问题内容: 如果行或分支覆盖范围低于给定的阈值,我试图将我的WAR项目构建配置为失败。我一直在使用Java Power Tools 一书中第455页提供的配置,但是没有成功。这是我的项目的Maven 2 POM的相关代码段: 就像我说的那样,覆盖率报告工作正常,问题在于,如果行或分支覆盖率低于我指定的阈值,则“安装”目标不会失败。有人能正常工作吗?如果是这样,那么您的POM是什么样的?您使用的是哪
问题内容: 我制作一个可以执行的makefile 。如果coverage小于X,是否有可能使命令失败?我该怎么办? 问题答案: 您可以在测试中使用该功能。TestMain可以充当测试的自定义入口点,然后您可以调用以获取对覆盖率统计信息的访问。 因此,例如,如果您希望失败率低于80%,则可以将其添加到软件包的测试文件之一中: 然后将调用此入口点,您将失败: 请注意,返回的数字低于测试报告的数字。我看
我正在使用来衡量我的测试的代码覆盖率。我已经启用了分支机构覆盖,但我不能完全理解该报告。 没有分支保险,我得到100%的保险: 启用分支覆盖: 有问题的来源可以在这里找到。 <代码>21- 然而,<代码>53-
我面临以下问题, [错误]无法在项目 Vsts 上执行目标组织 apache.maven.plugins:maven-antrun-plugin:1.8:run(默认):发生蚂蚁构建异常:创建报告时出错 [ERROR]关于Ant部件……@8:11 in/__w/49/s/target/antrun/build main。xml:分析myapp/target时出错/demo.war@WEB-INF/
问题内容: 如果不满足覆盖率阈值(即覆盖率必须至少为80%或构建失败),那么对于给定的项目,我曾见过许多使Maven支持的Jenkins构建失败的文章。 我想知道是否有一种方法可以配置Jenkins使构建失败,如果覆盖率低于上一个构建,即如果构建N的覆盖率是20%,而N + 1的覆盖率是19%,那么构建将失败。我不想设定明确的门槛,但我希望覆盖范围保持稳定或随着时间的推移而提高。 问题答案: 将最
我在所有这些过程中只使用了“命令行”,我想这样做。(不使用Ant、maven、gradle等) 我想运行 Junit 测试用例和 JaCoCo 覆盖率估计。 首先,下面是我的代码 : : 2个java文件位于< code>C\Cal中,< code>Cal文件夹包含4个jar文件(< code>junit-4.12.jar 、< code > ham crest-core-1.3 . jar 、<