cr2格式怎么用百度云打开
2023年1月4日发(作者:世界最美的十大海滩)
idea怎么使⽤jacoco⽣成报告_基于jacoco的功能测试代码覆盖
率实践
1.基于jacoco的功能测试代码覆盖率实践
1.1⽬前主流代码覆盖率统计⼯具
考虑到⽅案实施的难度很⼤取决于⼯具是否仍保持维护更新,所以选择jacoco来进⾏实践。
Jacoco是⼀个开源的覆盖率⼯具。Jacoco可以嵌⼊到Ant、Maven中,并提供了EclEmmaEclipse插件,也可以使⽤JavaAgent技
术监控Java程序。很多第三⽅的⼯具提供了对Jacoco的集成,如sonar、Jenkins、IDEA。
Jacoco包含了多种尺度的覆盖率计数器,包含指令级(Instructions,C0coverage),分⽀(Branches,C1coverage)、圈复杂度
(CyclomaticComplexity)、⾏(Lines)、⽅法(Non-abstractMethods)、类(Classes)。
➢Instructions:Jacoco计算的最⼩单位就是字节码指令。指令覆盖率表明了在所有的指令中,
哪些被指令过以及哪些没有被执⾏。这项指数完全独⽴于源码格式并且在任何情况下有效,不需要类⽂件
的调试信息。
➢Branches:Jacoco对所有的if和switch指令计算了分⽀覆盖率。这项指标会统计所有的分⽀数
量,并同时⽀出哪些分⽀被执⾏,哪些分⽀没有被执⾏。这项指标也在任何情况都有效。异常处理不考虑在分⽀范围内。
➢CyclomaticComplexity:Jacoco为每个⾮抽象⽅法计算圈复杂度,并也会计算每个类,包,组的复杂度。根据McCabe1996的定
义,圈复杂度可以理解为覆盖所有的可能情况最少使⽤的测试⽤
例数。这项参数也在任何情况下有效。
➢Lines:该项指数在有调试信息的情况下计算。
➢Methods:每⼀个⾮抽象⽅法都⾄少有⼀条指令。若⼀个⽅法⾄少被执⾏了⼀条指令,就认为它被执⾏过。因为JaCoco直接对字节码
进⾏操作,所以有些⽅法没有在源码显⽰(⽐如某些构造⽅法和由编
译器⾃动⽣成的⽅法)也会被计⼊在内。
➢Classes:每个类中只要有⼀个⽅法被执⾏,这个类就被认定为被执⾏。同5⼀样,有些没有在源码声明的⽅法被执⾏,也认定该类被执
⾏。
1.2jacoco部署准备⼯作
➢下载安装ANT,具体可参考百度,需配置环境变量。
第⼀步:解压下载的⽂件,将lib⽂件夹下的包拷贝放到对应tomcat服务器的lib⽬录下
第⼆步:修改tomcatbin⽬录下的⽂件,在setlocal后添加如下代码:
set"JAVA_OPTS=-javaagent:%CATALINA_HOME%=includes=em.
jeesite.*,output=tcpserver,port=8144,address=127.0.0.1-Xverify:none"
(限Windows环境,其他系统略有不同,需先停掉tomcat服务)
配置完成后,可直接重启tomcat服务,查看logs⽬录下的catalina⽇志,查找jacocoagent字段,若有,则代表配置成功。
第三部:添加配置⽂件,随便存储在哪⾥都成,具体配置如下:
1.3本地⽣成覆盖率报告
以上配置完成后,可进⾏对应的功能测试操作,通过antdump命令,可动态获
取覆盖率数据,不需要停⽌tomcat服务器。
备注:Jenkins的Jacocoplugin可以根据.exec⽂件直接⽣成覆盖率报告,并在Jenkins中⽣成图
表等等。那样的话,antreport这个任务就没⽤了。可直接在jenkins中配置,在每次项⽬构建的时候⾃
动执⾏report,这样就不需要将项⽬源码⽂件checkout到本地
➢打开cmd命令⾏窗⼝,进⼊所在⽬录,执⾏antdump,
若成功,会输出如下信息:
➢在执⾏antreport。jacoco就会在你指定的路径⽣成覆盖率报告了
2.基于jacoco+SonarQube+sonar-scanner的集成实践
SonarQube能够提供对代码的⼀整套检查扫描和分析功能,可以通过sonar-scanner完成对各开发环境和软件的⽀持。通过整合jacoco
不仅可以展⽰代码扫描结果,也能图形化显⽰测试覆盖率情况。
2.1SonarQube准备⼯作
第⼀步:
➢安装MySql,并创建数据库(也可使⽤内置数据库,实际使⽤会很慢)
--创建数据库:
CREATEDATABASEsonarCHARACTERSETutf8COLLATEutf8_general_ci;--创建SonarQubeServer访问数据库的⽤户:
CREATEUSER'sonar'IDENTIFIEDBY'sonar';
--配置SonarQubeServer访问数据库⽤户的权限
GRANTALLONsonar.*TO'sonar'@'%'IDENTIFIEDBY'sonar';
GRANTALLONsonar.*TO'sonar'@'localhost'IDENTIFIEDBY'sonar';
--更新权限:
flushprivileges;
第⼆步:
➢配置SonarQube配置⽂件,打开SonarQube下的conf/ties
➢配置sonar-scanner配置⽂件,修改ties⽂件
第三步:
➢配置SonarQube系统
第四步:
对应项⽬⼯程添加properties配置⽂件,⽂件内容如下:
#指定SonarQubeinstance必须是唯⼀的
tKey=BR_CR2794_20170419
#设置SonarQubeUI显⽰的名称
tName=hrms
tVersion=1.0
ge=java
#指定src和classes⽂件夹位置,当可以是全路径,如果是当前⼯程根⽬录下⽤“.”表⽰也可以
s=src
es=target
#不参与分析的某个⽂件夹或者忽略某个⽂件夹
#ions=src1/**,src3/**
#ions=src2/**,src4/**
#源码编码,默认是系统编码
Encoding=UTF-8
#SetjacocoConfiguration
#指定代码覆盖率⼯具
veragePlugin=jacoco
#指定exec⼆进制⽂件存放路径
Paths=D:/covge/
#以下属性⾮必须,具体含义参考百度
cAnalysis=reuseReports
=false
2.2SonarQube执⾏项⽬分析
以上配置完成后,打开cmd窗⼝,进⼊⼯程根⽬录,执⾏sonar-scanner命
令,若报错,可在命令后加上-X重新执⾏⼀遍,会显⽰详细报错信息。成功应
有如下内容输出:
2.2SonarQube集合jenkins和maven使⽤
➢在Jenkins中安装和使⽤SonarQube的先决条件:安装插件SonarQubePlugin,并且Jenkins插件SonarQubePlugin在配置位
置Jenkins->Configuration->ConfigureSystem->SonarQubeservers中的选项ServerURL要配置正确,使⽤已经安装好的
SonarQubeServer的URL
➢修改maven配置,参照官⽅配置:
sonar
true
修改Maven配置之后,在Maven构建指令上加上⼀个Goals即可:
$SONAR_MAVEN_=$SONAR_HOST_URL