软件测试 | 代码覆盖率集成

518 篇文章 3 订阅
514 篇文章 2 订阅
JaCoCo是一个用于Java和Kotlin的代码覆盖率工具,可集成到Jenkins中以自动化代码质量验证。文章介绍了如何配置Maven项目、Jenkinsjob,以及如何通过JaCoCo插件记录和分析代码覆盖率报告,包括行覆盖率、分支覆盖率等指标,帮助识别未覆盖的代码和无用代码。
摘要由CSDN通过智能技术生成

1.JaCoCo简介

JaCoCo是一个开源的代码覆盖统计工具,支持Java和Kotlin;支持计算测试代码对项目的覆盖情况,能定位到测试未覆盖的代码部分;同时它也能检查程序中的“废”代码和不合理的逻辑,用以提高代码质量;JaCoCo不仅能对本地的代码进行检查,我们还可以把它与持续集成工具Jenkins进行集成,这样就能在代码提交后自动对提交的代码进行覆盖率的验证,保证提交代码的质量。

2.JaCoCo运行环境准备

(1)Jenkins服务:执行代码覆盖率的节点计算机,由于Jenkins执行代码覆盖率是向本地工具发起调用,所以,此节点计算机上需要安装好代码覆盖的相关工具,如Java和Maven。

(2)Jenkins上需要安装JaCoCo插件。

(3)安装JUnit单元测试框架。

3.Maven项目与Jenkins工程(job)配置

(1)在Maven项目的配置文件(pom.xml)中配置jacoco-maven-plugin工具(见图8-36)。

 

(2)在Jenkins中建立一个自由风格的项目(见图8-37)。

(3)配置好节点计算机,此计算机是JaCoCo运行环境中的节点计算机,勾选“限定节点运行”(Restrict where this project can be run)项后,在“标签表达式”(Label Expression)文本框中填入节点的匹配表达式(见图8-38)。

 

(4)配置代码源,将被测项目的代码的Git地址配置到图8-39所示的URL中。

 

(5)在“构建”(Build)选项卡界面中选择“增加构建步骤”(Add build step)项,在“构建步骤”中选择执行shell(Execute shell)(见图8-40)。

 

(6)在“构建后操作”(Post-build Actions)中,选择“增加构建后操作步骤”(Add post-build action)项,在展开的页面中选中“Record JaCoCo coverage report”项(见图8-41),展开的页面中的其他配置项可以保持默认值。

4.执行job

(1)job配置完成之后,保存信息。在job首页的左边功能列表中有对该工程的操作,点击“立即构建”(Build Now)项,构建完成后会在job首页上展示一个代码覆盖率的趋势图。其中“line covered”表示代码的覆盖,“line missed”表示代码的丢失(见图8-42)。

 (2)点击趋势图能进入详细信息页面(M表示丢失,C表示已覆盖)(见图8-43)。其中部分字段的含义如下。

1)instruction:字节码指令覆盖率。

2)branch:分支代码覆盖率。

3)complexity:圈复杂度覆盖率。

4)line:行覆盖率。

5)method:方法覆盖率。

6)class:类覆盖率。

 

(3)图8-43中的“Coverage Breakdowm by Package” 项展示出包的覆盖信息,通过点击包名还能继续查看包下面的类、方法等更详细的代码覆盖情况,未覆盖的代码会被标识成为红色(见图8-44和图8-45)。注:实际运行环境中有颜色。

 

 

(4)从第3个步骤中可以看到,Demo1类中的countlength() 方法有一个if语句的分支长度大于10(length>10)的条件没有覆盖到。此时可以在项目的测试代码中新增一个测试用例(见图8-46)。

 

(5)我们用Jenkins重新构建任务后,将会发现前面未被覆盖的代码行已经被覆盖了(见图8-47)。

(6)我们在项目的main函数中增加一些无用代码,用Jenkins重新构建后发现新增的两行无用代码未被覆盖。根据对代码分析可知,代码中两个整数相乘是不会出现问题的,所以代码中的try语句是无用代码,测试程序就不会进入到catch的分支(见图8-48和图8-49)。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值