<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
</dependency>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
<configuration>
<!--这里指定单元测试覆盖率扫描的包-->
<includes>
<include>**/service/**</include>
<include>**/remote/**</include>
</includes>
<!--这里指定单元测试覆盖率排除的包-->
<excludes>
<exclude>**/domain/**</exclude>
<exclude>**/dto/**</exclude>
<exclude>**/po/**</exclude>
</excludes>
<!-- 指定报告率生成路经,与父pom同级别,且必须生成在这路经下 -->
<outputDirectory>${basedir}/../target/site/jacoco</outputDirectory>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
更多了解看jacoco官方文档
单测覆盖率统计中心(cover-center)暂时只支持jacoco
2. 父pom文件引入单测覆盖率统计插件并做配置
<plugin>
<groupId>com.souche</groupId>
<artifactId>cover-maven-plugin</artifactId>
<version>1.2.2-SNAPSHOT</version>
<configuration>
<skip>false</skip>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cover-report</goal>
</goals>
</execution>
</executions>
</plugin>
- 子module不需要做任何事。
其实到这里为止就可以使用jacoco生成报告并上传到覆盖率中心了,在父pom下使用如下命令:
注意在多module的情况下命令必须分开执行
mvn test jacoco:report
mvn cover:cover-report
第二种: - 父pom文件中新增jacoco插件及依赖,不需做多余的处理
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
</dependency>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.2</version>
</plugin>
- 父pom文件引入单测覆盖率统计插件
<plugin>
<groupId>com.souche</groupId>
<artifactId>cover-maven-plugin</artifactId>
<version>1.2.2-SNAPSHOT</version>
</plugin>
- 每个子pom文件中新增jacoco插件及依赖,同时配置jacoco
<dependency>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
</dependency>
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<configuration>
<!--这里指定单元测试覆盖率扫描的包-->
<includes>
<include>**/service/**</include>
<include>**/remote/**</include>
</includes>
<!--这里指定单元测试覆盖率排除的包-->
<excludes>
<exclude>**/domain/**</exclude>
<exclude>**/dto/**</exclude>
<exclude>**/po/**</exclude>
</excludes>
<!-- 指定报告率生成路经,与父pom同级别,且必须生成在这路经下 -->
<outputDirectory>${basedir}/../target/site/jacoco</outputDirectory>
</configuration>
<executions>
<execution>
<id>jacoco-initialize</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>jacoco-site</id>
<phase>package</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
- 子pom文件引入单测覆盖率统计插件并做配置
<plugin>
<groupId>com.souche</groupId>
<artifactId>cover-maven-plugin</artifactId>
<version>1.2.2-SNAPSHOT</version>
<configuration>
<skip>false</skip>
</configuration>
<executions>
<execution>
<phase>package</phase>
<goals>
<goal>cover-report</goal>
</goals>
</execution>
</executions>
</plugin>
在父pom下使用如下命令:
mvn test jacoco:report
mvn cover:cover-report
如果项目只有一个包,以上步骤无需区分父子pom。
从事电源行业的朋友们都知道,所谓EMC其实就是设备或系统在其电磁环境中能正常工作,并且不对该环境中任何事物构成不能承受的电磁骚扰的能力。通常其测试包括对其向外界发送的电磁骚扰强度进行测试,以及对其在规定电磁骚扰强度的电磁环境条件下进行敏感度测试,前者是以便确认是否符合有关标准规定的限制值要求;而后者是确认是否符合有关标准规定的抗扰度要求。掌握一定的EMC测试技术是十分必要的,本文就将分享那些EMC的测试要点以及其故障排除方案。
单片机系统EMC测试
1. 测试环境
为了保证测试结果的准确和可靠性,电磁兼容性测量对测试环境有较高的要求,测量场地有室外开阔场地、屏蔽室或电波暗室等
引入Lombok后就会发现,覆盖率通常会低得让人匪夷所思。例如某个项目,通过Jacoco获取到的代码行数以及覆盖率为:
可见,这个覆盖率是非常低的,会被质量门禁判违规(常见会要求>50%甚至>80%)
下载地址 https://www.eclemma.org/jacoco/官方文档 https://www.jacoco.org/jacoco/trunk/doc/agent.html。
为了提供一个更好的 JaCoCo 单测报告,我们可以将一些无业务逻辑的代码(PO,DTO等)从单测报告中移除。
如下面配置,通过在 configuration -> excludes -> exclude 排除相关包路径即可。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0
在我司对核心业务基于Spock落地单元测试过程中, 使用jacoco插件生成单元测试报告,遇到了覆盖率异常的问题.
经过排查, 最终发现在使用powermock的
@PrepareForTest([HttpUtils.class, XXXHandler.class]) 注解时, 数组里的类是会被Jacoco忽略的.
powermock和jacoco存在冲突,以下是抄来的解释:
JaCoCo和PowerMock都是通过在加载类的时候修改字节码文件来实现统计覆盖率和mock静态类的功能。
看完上面的就知道什么时候或者为什么要编写单元测试了。其他的我们不多说了,直接进入实战操作,这次使用的是springboot+Mockito框架,在最后会指出一些小技巧和bug。
Jacoco增量覆盖率说明
能找到这里,说明对jacoco的原理和使用有了一定的了解,而我写这边文章主要是网络上基本没有完整文档加代码的jaocco增量覆盖说明,所以我想分享些东西让需要这方面的人快速去实现自己想要的功能,那么如果想实现增量代码覆盖率需要做到哪些工作呢?(格式难看到这里看http://note.youdao.com/s/6gM8ONX3)
大家在网络上找到的实现方式无外乎三种
获取到增量代码,在jacoco进行插桩时判断是否是增量代码后再进行插桩,这样需要两个步骤,一是获取增量代码,二
编写java代码后,通过单元测试可以了解代码覆盖率等指标
maven可以配置jacoco对项目进行扫描,生成报告文件jacoco.xml
sonar可以识别jacoco.xml文件,对报告进行更好的UI展示,跟踪质量晋升曲线等。
使用jacoco插件来生成mvn test报告,需要在每个项目代码中增加配置。
其中的配置是有共性的,不需要每个项目的开发者都掌握配置方法,这个重复工作可以交给项目管理来做,Jenkins单任务,流水线之类都可以。
我们主要通过jenkins的Sh
我检查了Jacoco github ans浏览了一些Stack Overflow问题。通过注释不支持最高版本0.7.9的jacoco过滤方法,仅支持整个类。现在0.8.0和0.8.1已经发布。这些版本中是否添加了此功能?我检查了jacoco的变化历史。但是在最新版本中看不到与过滤相关的任何内容。但是仍然想确认某人是否实现了这一目标以及如何实现?答案我找到了如何从覆盖率报告中排除静态方法的解决方案。...