idea怎么使⽤jacoco⽣成报告_在idea中使⽤JaCoCo插件统计
单元测试覆盖率的实现
在后台⼯程师开发完新代码交给QA进⾏测试时,软件测试⼈员⼀般都会要求后台开发对单元测试的覆盖率达到⼀定的标准;例如我们的标准是分⽀覆盖率达到50%以上,函数覆盖率达到50%以上。
在idea中查看覆盖率挺简单的,idea中⽀持三种插件来查看覆盖率,每种插件统计明细各有千秋,分别是idea⾃带插件、JaCoCo、Emma。
在idea中打开⼀个测试类,点击右上⾓“Edit Configurations”按钮,如下图所⽰:
然后会弹出⼀个框,左侧菜单栏显⽰JUnit栏⽬,右边我们选择“Code Coverage"选项卡,下⾯有⼀个”choose coverage runner“下拉菜单,默认是idea⾃带的,我们可以切换成其他的(只不过需要在pom
中配置⼀下),如下图所⽰:
idea默认⾃带的插件,统计出来的覆盖率只包含classes、method、line,不太详细,不能满⾜我们的
要求;所以⼀般使⽤JaCoCo插件来统计,我们切换成JaCoCo插件以后,紧接着在maven的pom⽂件中这样配置:
(1)添加依赖
org.jacoco
jacoco-maven-plugin
0.8.2
(2)配置plugins
org.jacoco
jacoco-maven-plugin
0.8.2
target/
target/
**/service/**
**/controller/**
BUNDLE
METHOD
COVEREDRATIO
0.50
BRANCH
COVEREDRATIO
0.50
CLASS
MISSEDCOUNT
jacoco-initialize
prepare-agent
check
check
jacoco-site
package
report
如果你想使⽤idea⾃带的插件,查看简单的覆盖率数据,可以直接在测试类上右键点击”Run ‘xxxxxTest" with Coverage",如下图所⽰:
当JaCoCo插件配置好以后,要获得 JaCoCo的统计数据,就要执⾏mvn install 命令。执⾏完以后,target/site/jacoco/⽬录下会⽣成⼀
个index.html⽂件,这是统计数据总览页⾯,可以在浏览器打开查看,如下图所⽰:
由于我们在pom⽂件的plugin⾥⾯配置了rule规则和check ⽬标,所以在覆盖率不满⾜的情况下,mvn install是不会成功的,并且会报
错:
另⼀个需要注意的是我在rule中配置的规则,有的是 COVEREDRATIO,有的是MISSEDCOUNT,这说明有的统计的是覆盖率,有的统计
的是丢失率(也即未覆盖到的),你可别看错了。
配置JaCoCo插件⼀定注意和JDK版本的对应关系,如果你⽤的是jdk1.8,则插件⼀定要⽤最新版,要不然会报如下错误:
Caused by: java.lang.RuntimeException: Class java/util/UUID could not be instrumented.
at
org.ateFor(ModifiedSystemClassRuntime.java:138)
at
org.ateFor(ModifiedSystemClassRuntime.java:99)
at org.internal_ateRuntime(PreMain.java:51)
at org.internal_5d10cad.PreMain.premain(PreMain.java:43)
... 6 more
Caused by: java.lang.NoSuchFieldException: $jacocoAccessjdk怎么使用
at java.Field(Class.java:1542)
at
org.ateFor(ModifiedSystemClassRuntime.java:136)
... 9 more
FATAL ERROR in native method: processing of -javaagent failed
Exception in thread "main"
补充:Intellij IDEA run coverage之覆盖率测试
⼀.选择覆盖率报表⼯具
⼆.运⾏测试⽤例
三.查看覆盖率报表
四.下载查看报表
点击这个
勾选open
查看报表
以上为个⼈经验,希望能给⼤家⼀个参考,也希望⼤家多多⽀持云海天教程。如有错误或未考虑完全的地⽅,望不吝赐教。