一、背景
上文已把覆盖率数据采集好了,并提供远程连接的tcp地址及端口。
jacococli.jar 我下载好了,放在github工程里。
本文主要是介绍如何使用jacoco cli 客户端读取并生成覆盖率报告。
二、使用
1、dump覆盖率统计
java -jar doc/jacococli.jar dump --address 172.27.3.242 --port 7195 --destfile jacoco.exec
// 参数的使用
java -jar jacococli.jar dump [--address <address>] --destfile <path> [--help] [--port <port>] [--quiet] [--reset] [--retry <count>]
2、生成覆盖率报告
java -jar doc/jacococli.jar report jacoco.exec --classfiles target/classes --sourcefiles src/main/java --html target
// 参数的使用
java -jar jacococli.jar report [<execfiles> ...] --classfiles <path> [--csv <file>] [--encoding <charset>] [--help] [--html <dir>] [--name <name>] [--quiet] [--sourcefiles <path>] [--tabwith <n>] [--xml <file>]
--classfiles <classfiles>:指定要分析的字节码文件(.class 文件)的目录或文件。
--sourcefiles <sourcefiles>:指定源代码的位置,以便在报告中生成源文件的可读信息。
--html <outputdir>:指定输出目录,JaCoCo 将生成 HTML 格式的覆盖率报告。
当class和source文件或文件夹是多个的时候,写法如下:
java -jar doc/jacococli.jar report jacoco.exec \
--classfiles target/classes \
--classfiles xxx/target/classes \
--classfiles yyy/target/classes \
--sourcefiles src/main/java \
--sourcefiles xxx/src/main/java \
--sourcefiles yyy/src/main/java \
--html target
后文会说到集成jacoco的ant task,支持正则匹配。
但是,jacoco cli是不支持正则的,需要你通过shell脚本来配合使用,比如:
java -jar doc/jacococli.jar report jacoco.exec \
--classfiles $(find target/classes -name '*.class') \
--sourcefiles src/main/java \
--html log
三、查看报告
打开log目录下的index.html,即可看到jacoco覆盖率报告。
附录
Java应用程序的测试覆盖率之设计与实现(一)-- 总体设计
Java应用程序的测试覆盖率之设计与实现(二)-- jacoco agent
Java应用程序的测试覆盖率之设计与实现(三)-- jacoco cli 客户端
Java应用程序的测试覆盖率之设计与实现(四)-- jacoco-maven-plugin
Java应用程序的测试覆盖率之设计与实现(五)-- jacoco ant task
Java应用程序的测试覆盖率之设计与实现(六)-- 单元测试覆盖率
Java应用程序的测试覆盖率之设计与实现(七)-- 增量代码的测试覆盖率
Java应用程序的测试覆盖率之设计与实现(八)-- jenkins集成