Jacoco Maven插件提供运行时代理来产出测试覆盖率报告。
- 条件
maven版本3.0或更高版本
运行和测试Java版本高于1.5 - maven配置
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6-SNAPSHOT</version>
</plugin>
- 查看插件所有可用对应用(goal)
执行 mvn help:describe -Dplugin=org.jacoco:jacoco-maven-plugin -Ddetail 可以查看插件目标的 描述、实现类、语言、默认绑定maven阶段、可配置参数
命令 | 描述 | 实现类 | 默认绑定 | 依赖 |
---|---|---|---|---|
jacoco:check | org.jacoco.maven.CheckMojo | verify | 配置覆盖率阈值并检测覆盖率是否达到阈值,没有达到测试失败 | |
jacoco:dump | org.jacoco.maven.DumpMojo | post-integration-test | 基于TCP/IP协议向运行于tcpserver模式的Jacoco agent发送信号dump覆盖率信息 | |
jacoco:help | org.jacoco.maven.HelpMojo | mvn jacoco:help -Ddetail=true -Dgoal= | ||
jacoco:instrument | org.jacoco.maven.InstrumentMojo | process-classes | offline插桩 | |
jacoco:merge | org.jacoco.maven.MergeMojo | generate-resources | 把若干个执行数据(.exe)合并为一个 | |
jacoco:prepare-agent | org.jacoco.maven.AgentMojo | initialize | jvm运行test配置参数 | |
jacoco:prepare-agent-integration | org.jacoco.maven.AgentITMojo | pre-integration-test | ||
jacoco:report | org.jacoco.maven.ReportMojo | verify | 创建覆盖率报告 | |
jacoco:report-aggregate | org.jacoco.maven.ReportAggregateMojo | |||
jacoco:report-integration | org.jacoco.maven.ReportITMojo | verify | ||
jacoco:restore-instrumented-classes | org.jacoco.maven.RestoreMojo | prepare-package | 在offline插桩前存储class |
- 设置
编译插件,将类编译成class文件,如果要输出行覆盖率,必须输出debug信息。javac编译有三种编译方式: default(相当于-g:line:source), -g:none,-g:line,source,var ,
line: 输出字节码与源码行的对应关系,否则不能产出test与源码行的对应关系,异常也不能定位具体代码行
source: class文件中源码文件的名称,否则不能产出test与源码对应关系,异常不能定位源码文件
var: class中局部变量表与源码局部变量与描述符的对应关系,否则class文件不会有原定义变量名称
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>8</source>
<target>8</target>
<debug>true</debug>
<debuglevel>none</debuglevel>
</configuration>
</plugin>
test执行插件
如果设置forkCount 为0或者forkMode为never则会阻止jacocoAgent运行,不能生产覆盖率报告
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>3.0.0-M5</version>
<configuration>
<forkMode>always</forkMode>
</configuration>
</plugin>
Jacoco插件配置
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.6-SNAPSHOT</version>
<executions>
<execution>
<id>default-prepare-agent</id>
<goals>
<goal>prepare-agent</goal>
</goals>
</execution>
<execution>
<id>default-report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
</execution>
</executions>
</plugin>
https://blog.csdn.net/wubai250/article/details/8481357