true
其中,jacoco-maven-plugin后面跟的是jacoco的版本; 【-Dmaven.test.failure.ignore=true】建议加上,否则如果单元测试失败,就会直接中断,不会产生.exec文件
执行以上命令后,会在当前目录下的target目录产生一个jacoco.exec文件,该文件就是覆盖率的文件:
总体说来,这种方式比较简单,在与jekins集成时也非常方便,推荐大家用这种方式进行配置。
4.2 在pom文件中添加jacoco插件
具体的配置方法如下:
1.添加依賴
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
</dependency>
2.配置plugins
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<includes>
<include>com/**/*</include>
</includes>
</configuration>
<executions>
<execution>
<id>pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>post-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
其中包含(includes)或排除(excludes)字段的值应该是相对于目录/ classes /的编译类的类路径(而不是包名),使用标准通配符语法:
* Match zero or more characters
** Match zero or more directories
? Match a single character
你也可以这样排除一个包和它的所有子包/子包:
<exclude>com/src/**/*</exclude>
这将排除某些包装中的每个课程,以及任何孩子。例如,com.src.child也不会包含在报表中。
也可以在pom中指定筛选规则:
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>${jacoco.version}</version>
<configuration>
<includes>
<include>com/src/**/*</include>
</includes>
<!-- rules裏面指定覆蓋規則 -->
<rules>
<rule implementation="org.jacoco.maven.RuleConfiguration">
<element>BUNDLE</element>
<limits>
<!-- 指定方法覆蓋到50% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>METHOD</counter>
<value>COVEREDRATIO</value>
<minimum>0.50</minimum>
</limit>
<!-- 指定分支覆蓋到50% -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>BRANCH</counter>
<value>COVEREDRATIO</value>
<minimum>0.50</minimum>
</limit>
<!-- 指定類覆蓋到100%,不能遺失任何類 -->
<limit implementation="org.jacoco.report.check.Limit">
<counter>CLASS</counter>
<value>MISSEDCOUNT</value>
<maximum>0</maximum>
</limit>
</limits>
</rule>
</rules>
</configuration>
<executions>
<execution>
<id>pre-test</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>post-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
此时运行mvn test生成index.html(即覆盖率报告)位置在:
也可以指定输出目录:
<execution>
<id>post-unit-test</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>target/jacoco.exec</dataFile>
<outputDirectory>target/jacoco-ut</outputDirectory>
</configuration>
</execution>
在这里,我们将单元测试结果的输出目录确定为target/jacoco-ut目录下~
转载:https://www.cnblogs.com/fnlingnzb-learner/p/10637802.html
增量覆盖率的思想:
1. 获取测试完成后的 exec 文件(二进制文件,里面有探针的覆盖执行信息);
2. 获取基线提交与被测提交之间的差异代码;
3. 对差异代码进行解析,切割为更小的颗粒度,我们选择方法作为最小纬度;
4. 改造 JaCoCo ,使它支持仅对差异代码生成覆盖率报告;
jacoco原理:https://www.cnblogs.com/forfreewill/articles/13627983.html