Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin
说在前面的话
加载jacocoagent,开始采集覆盖率数据。
java -javaagent:doc/jacocoagent.jar=includes=com.jacoco.*,output=tcpserver,port=7195,address=172.27.3.242,classdumpdir=classdumpdir/classes/ \
-jar target/jacoco-test-sample.jar
. ____ _ __ _ _
/\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
\\/ ___)| |_)| | | | | || (_| | ) ) ) )
' |____| .__|_| |_|_| |_\__, | / / / /
=========|_|==============|___/=/_/_/_/
:: Spring Boot :: (v2.2.4.RELEASE)
2024-10-23 10:06:59.755 INFO 62363 --- [ main] com.jacoco.JacocoTestApplication : Starting JacocoTestApplication v1.0.0 on xxxdeMacBook-Air.local with PID 62363 (/Users/xxx/Documents/code/jacoco-test-sample/target/jacoco-test-sample.jar started by zhuwenping in /Users/xxx/Documents/code/jacoco-test-sample)
2024-10-23 10:06:59.785 INFO 62363 --- [ main] com.jacoco.JacocoTestApplication : No active profile set, falling back to default profiles: default
2024-10-23 10:07:04.255 INFO 62363 --- [ main] com.jacoco.JacocoTestApplication : Started JacocoTestApplication in 5.64 seconds (JVM running for 7.01)

一、什么是jacoco-maven-plugin
除了使用jacoco.cli.jar导出并生成覆盖率报告外,还可以使用jacoco-maven-plugin,它是maven集成了jacoco的一款插件。
在工程pom.xml里配置插件jacoco-maven-plugin。
<plugin>
<groupId>org.jacoco</groupId>
<artifactId>jacoco-maven-plugin</artifactId>
<version>0.8.3</version>
<configuration>
<!--javaagent所在机器地址-->
<address>172.27.3.242</address>
<!--javaagent所在机器,tcpserver的端口号-->
<port>7195</port>
<destFile>${project.build.directory}/jacoco.exec</destFile>
<reset>false</reset>
<append>true</append>
<sourceEncoding>utf-8</sourceEncoding>
<excludes>
<exclude>com/jacoco/JacocoTestApplication.class</exclude>
</excludes>
</configuration>
<executions>
<execution>
<id>dump</id>
<goals>
<goal>dump</goal>
</goals>
</execution>
<execution>
<id>report</id>
<phase>test</phase>
<goals>
<goal>report</goal>
</goals>
<configuration>
<dataFile>${project.build.directory}/jacoco.exec</dataFile>
<outputDirectory>${project.reporting.outputDirectory}/jacoco</outputDirectory>
</configuration>
</execution>
</executions>
</plugin>
二、mvn jacoco:dump
等价于 java -jar doc/jacococli.jar dump --address 172.27.3.242 --port 7195 --destfile target/jacoco.exec

在工程target目录下将生成一个.exec文件。

三、mvn jacoco:report
等价于 java -jar doc/jacococli.jar report jacoco.exec --classfiles target/classes --sourcefiles src/main/java --html target
不出意外,将在target目录下生成测试覆盖率的html报告。
可当执行命令mvn jacoco:report的时候,意外还是发生了。

1、需要提前编译好工程
mvn package -DskipTests
会一并把测试覆盖率的报告生成,这里把它手动删除,只为验证后面的命令。

2、再次生成报告
mvn jacoco:report, target目录下生成一个site目录


四、总结
三步走,即可得到测试覆盖率报告。
- mvn package
- mvn jacoco:dump
- mvn jacoco:report
浏览器输入网址: http://localhost:63342/jacoco-test-sample/target/site/jacoco/index.html

附录
Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计
Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
Java应用程序的测试覆盖率之设计与实现(三)-- jacoco cli 客户端
Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin
Java应用程序的测试覆盖率之设计与实现(五)-- jacoco ant task
Java应用程序的测试覆盖率之设计与实现(六)-- 单元测试覆盖率
Java应用程序的测试覆盖率之设计与实现(七)-- 增量代码的测试覆盖率
Java应用程序的测试覆盖率之设计与实现(八)-- jenkins集成
更多推荐




所有评论(0)