Java API 测试自动生成 jacoco 代码覆盖率报告

北纬三十度 · 2022年04月22日 · 2068 次阅读

►►►实现效果
接口测试►覆盖率探测►报告输出并关联用例

0 启动脚本注入 jacoco-agent

部署 jacoco 包,这里举例放在被测应用的/usr/jacoco,在应用的启动脚本 start.sh 添加 agent 入口,如果是流水线自动化部署,建议单独构建一个启动脚本副本,专做 SIT 测试用。

-javaagent:/usr/jacoco/lib/jacocoagent.jar=includes=*,output=tcpserver,port=9999,address=127.0.0.1,append=true

javaagent: jacocoagent.jar 包路径
includes: 被测系统的包路径,一般都是 com.xx.*
address\port: 支持远程输出执行数据

start.sh 启动服务后一并调起 agent 进程探测代码覆盖。

1 测试用例调用 jacoco 报告渲染

接口测试执行后用 jacoco dump 生成原始报告.exec:

java -jar /usr/jacoco/lib/jacococli.jar dump --address 127.0.0.1 --port 9999 --destfile ./report_target/res.exec

渲染 exec 覆盖率报告(生成 html):

java -jar /usr/jacoco/lib/jacococli.jar report /report_target/res.exec --classfiles /usr/ApplictionService/target/classes --html /usr/jacoco/report_final

--classfiles:被测 jar 包解包后的类文件路径(用于渲染报告)
--html:生成 html 报告路径(也支持导出--xml)

可以将这两步可以合并在一个 shell 里,接口测试的后置函数进行调用,这样测试执行和覆盖率报告生成两个动作就串联起来了:

2 报告落库

对报告的后续关联操作:

  1. html 报告导出到中转机
  2. 定时任务处理将报告字段落库(我们用 Python 的 BeautifulSoup 库读 html)
  3. 落库处理的时候可以将自动化测试后台数据并入,生成用例对覆盖率的映射

暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册