之前在做
接口测试代码覆盖率(jacoco)方案
的时候,漏了一些东西,这篇文章补一下。做使用
jacoco
做接口代码覆盖率测试的过程中,遇到一个问题:测试报告里面信息太多,很杂乱没有针对性,很多都是
config
和
bean
以及适配器的类,绝大部分没有业务代码,统计出来的覆盖率受影响比较大,不够准确。
这里就引入了如何过滤
jacoco
代码覆盖率测试报告的问题,经过查阅资料,大概的方案分两种:一是在
jacoco
配置中过滤,二是在
class
文件夹中删除掉无用的
class
文件。
经过一些考量,决定采用第一种方案,原因如下:
第二种方案不可逆,如果在统计完某一个
moudel
的覆盖率,之后在统计其他
moudel
的时候就无法直接实现;
第二种处理起来比较麻烦,规则需要脚本实现。
与现有框架不好结合,没办法在报告的框架中方便快捷实现这个功能。
第一种方案主要修改
build
文件的配置:
<?xml version=
"1.0"
?>
<
project
name
=
"studentpad-middle-toc"
basedir
=
"/home/jmsmanager/report/studentpad-middle-toc"
xmlns:jacoco
=
"antlib:org.jacoco.ant"
xmlns:sonar
=
"antlib:org.sonar.ant"
default
=
"all"
>
<
property
name
=
"projectName"
value
=
"studentpad-middle-toc"
/>
<
property
name
=
"jacocoantPath"
value
=
"/home/jmsmanager/jacoco/lib/jacocoant.jar"
/>
<
property
name
=
"reportfolderPath"
value
=
"${basedir}/report/"
/>
<
property
name
=
"server_ip"
value
=
"127.0.0.1"
/>
<
property
name
=
"waterommpClasspath"
value
=
"/xdfapp/${projectName}/webapps/ROOT/WEB-INF/classes/com/noriental/moudle"
/>
<
property
name
=
"mcmSrcpath"
value
=
"${basedir}/source/${projectName}/workspace/src/main/java"
/>
<
taskdef
uri
=
"antlib:org.jacoco.ant"
resource
=
"org/jacoco/ant/antlib.xml"
>
<
classpath
path
=
"${jacocoantPath}"
/>
</
taskdef
>
<
target
name
=
"merge"
depends
=
"dump"
>
<
jacoco:merge
destfile
=
"jacoco.exec"
>
<
fileset
dir
=
"${basedir}"
includes
=
"*.exec"
/>
</
jacoco:merge
>
</
target
>
<
target
name
=
"dump"
>
<
jacoco:dump
address
=
"${server_ip}"
reset
=
"true"
destfile
=
"${basedir}/jacoco.exec"
port
=
"12345"
append
=
"false"
/>
</
target
>
<
target
name
=
"report"
>
<
delete
dir
=
"${reportfolderPath}"
/>
<
mkdir
dir
=
"${reportfolderPath}"
/>
<
jacoco:report
>
<
executiondata
>
<
file
file
=
"${basedir}/jacoco.exec"
/>
</
executiondata
>
<
structure
name
=
"JaCoCo Report"
>
<
group
name
=
"学生中间层代码覆盖率"
>
<
classfiles
>
<
fileset
dir
=
"${waterommpClasspath}"
>
<
exclude
name
=
"**/vo/*.class"
/>
</
fileset
>
</
classfiles
>
<
sourcefiles
encoding
=
"UTF-8"
>
<
fileset
dir
=
"${mcmSrcpath}"
>
</
fileset
>
</
sourcefiles
>
</
group
>
</
structure
>
<
html
destdir
=
"${reportfolderPath}"
encoding
=
"utf-8"
/>
<
csv
destfile
=
"${reportfolderPath}/report.csv"
/>
<
xml
destfile
=
"${reportfolderPath}/report.xml"
/>
</
jacoco:report
>
</
target
>
<
target
name
=
"all"
/>
</
project
>
复制代码
主要在exclude这个标签里面过滤,如果大块排除,也可以在指定classfilepath的时候过滤。
郑重声明
:“FunTester”首发,欢迎关注交流,禁止第三方转载。更多原创文章:
FunTester十八张原创专辑
,合作请联系
Fhaohaizi@163.com
。
Linux性能监控软件netdata中文汉化版
图解HTTP脑图
JMeter如何模拟不同的网络速度
手机号验证码登录性能测试
删除List中null的N种方法--最后放大招
写给所有人的编程思维
好书推荐《Java性能权威指南》
如何成为全栈自动化工程师
Selenium并行测试基础
Selenium并行测试最佳实践
测试玩家勇哥