美文网首页
Jacoco生成覆盖率报告方法

Jacoco生成覆盖率报告方法

作者: TinyThing | 来源:发表于2021-06-23 16:08 被阅读0次

1. 本文根据Jacoco官方文档操作生成,具体请参考:

https://www.jacoco.org/jacoco/trunk/doc/agent.html

https://www.jacoco.org/jacoco/trunk/doc/cli.html

jacoco下载地址:

https://search.maven.org/remotecontent?filepath=org/jacoco/jacoco/0.8.7/jacoco-0.8.7.zip

2. Springboot项目运行时生成dump文件方法(on-the-fly模式,无需编写单元测试):

2.1 下载jacoco并解压:

image.png

2.2 IDEA中执行clean package,生成class文件和jar包,如图所示:

image.png

2.3 通过以下命令执行jar包启动:

java -javaagent:${ jacocoagent.jar的路径,在jacoco下的lib中}=includes=${ 要扫描的包路径,例如com.cosmoplat.*},output=tcpserver,port=6300,address=127.0.0.1 -jar ${你要执行的jar包}

例如:

image.png

参数解释:

-javaagent: 通过javaagent代理启动(java探针技术,可以理解为jvm的aop)
Includes: 要对哪些包进行覆盖检测,用分号(:)隔开, 支持通配符和?
excludes:不希望进行覆盖检测的包,同上;
address和port: jacoco用于输出执行数据,如果address为
,则支持远程输出;

2.4 启动jar包后,通过swagger或者直接点击页面,执行对应的业务逻辑进而覆盖相应的代码;

2.5 生成exec文件(执行覆盖数据dump):

java -jar ${jacococli.jar的路径,在jacoco下的lib中} dump --address 127.0.0.1 --port 6300 --destfile ${生成的dump文件路径}

例如:

image.png

执行完成后会在你指定的路径生成一个exec文件,根据该文件可以生成覆盖报告。

2.6 根据exec文件生成覆盖率报告:

java -jar ${jacococli.jar的路径} report ${exec文件路径} --classfiles ${类文件路径} --sourcefiles ${源码文件路径,要到/src/main/java} --encoding utf-8 --html ${报告路径}

例如:

image.png

执行完成后,会在指定的路径生成报告:

image.png
image.png

2.7 合并多个exec文件生成覆盖率报告:

有时我们可能一次不能满足覆盖率要求,需要多次测试,在进行合并,则需要将多次执行生成的exec进行合并

java -jar jacococli.jar merge [<execfiles> ...] --destfile <path>

参数解释:

Jacococli.jar: 在jacoco下的lib路径中

Merge: 后面跟要合并的exec文件,多个

--destfile: 合并后的文件,要带名称

3. 单元测试使用jacoco:

以idea为例,如图所示,在运行参数中加入-javaagent配置即可,当单元测试运行完后,会在对应的文件夹下生成相应的dump文件。

image.png

4 推荐先使用on-the-fly模式,点击页面进行覆盖,如果不达标,针对未覆盖的逻辑单独编写单元测试,最后将生成的exec进行merge即可。

相关文章

网友评论

      本文标题:Jacoco生成覆盖率报告方法

      本文链接:https://www.haomeiwen.com/subject/lglosltx.html