jacoco应用

测试覆盖率一般分为需求覆盖、代码覆盖
需求覆盖就是常见的功能测试用例设计依托,根据需求文档、原型、ui设计测试用例,以达成对需求的全面覆盖;
代码覆盖就是对开发代码层的覆盖,包括语句覆盖、判定覆盖、条件覆盖、路径覆盖、组合覆盖等。
两者相辅相成才能尽量保证对项目的全面测试。
jacoco就是一个可以量化并实时展示代码覆盖率的工具。它是一个开源的覆盖率工具,针对语言是java,使用方法灵活,可以嵌入到ant、maven中,可以作为eclipse插件,可以使用其javaagent技术监控java程序;很多第三方工具提供了对jacoco的集成,如sonar、jenkins等。
它的插桩模式分为on-the-fly和offline两种模式
offline模式:在测试前先对文件进行插桩,然后生成插过桩的class或jar包,测试插过桩的class和jar包后,会生成动态覆盖信息到文件,最后统一对覆盖信息进行处理,并生成报告。
on-the-fly:jvm中通过-javaagent参数指定特定的jar文件启Instrumentation的代理程序,代理程序在通过class loader装载一个class前判断是否转换修改class文件,将统计代码插入class,测试覆盖率分析可以在JVM只从测试代码的过程中完成。
工作中大多使用的是on-the-fly模式,但是运行环境不支持javaagent、部署环境不允许设置JVM参数、字节码需要被转换成其他的虚拟机、无法自定义用户加载类等,不适合on-the-fly模式。
on-the-fly方式如何使用?
1、打包被测项目,命令行方式:mvn package -Dmaven.test.skip=true
2、启动被测项目,命令行方式:java -javaagent:D:\Java\jacoco-0.8.6\lib\jacocoagent.jar=includes=*,output=tcpserver,port=9999,address=127.0.0.1,append=true -jar …\target\demo-0.1.jar
其中:-javaagent表示以引用jacocoagent插件方式启动被测项目;includes表示对哪些类进行插桩,*表示所有类;output设置启动项目的方案,一般为两种:file或tcpserver,此次使用tcpserver方式,port设置jacoco开启的tcpserver的端口,dump的时候也要执行相同端口,address设置jacoco对外开放的tcpserver的访问地址,地址设置127.0.0.1时只能在这台服务器上进行dump,地址为实际ip时,可以在任意一台机器上进行数据的dump;append设置执行结果是否在原文件末尾进行追加,true表示追加,false表示覆盖;…\target\demo-0.1.jar为步骤1中项目打包后的路径和名称。
3、对被测项目进行测试;
4、测试完成后,进入打包后的目录下生成数据覆盖文件:java -jar D:\Java\jacoco-0.8.6\lib\jacococli.jar dump --address 127.0.0.1 --port 9999 --destfile
启动jacococli jar包;address和port需要填写启动时的address和port;destfile:exec文件的生成目录。
此时生成的是.exec格式的文件,不太方面查看,所以我们还需要再执行命令让其转成我们需要的html、xml格式。
5、生成html以及xml报告:java -jar D:\Java\jacoco-0.8.6\lib\jacococli.jar report .\report\res.exec --classfiles ..\target\classes\com --sourcefiles ..\src\main\java --html .\html-report --xml .\report.xml --destfile .\report\res.exec
将刚刚生成的report下的res.exec文件转成html和xml;
classfiles和sourcefiles为项目源码路径和class文件路径;
执行后打开当前目录下的html-report下的index.html,即可查看结果。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值