首页 > 技术文章 > Jenkins 进阶篇 - 单元测试覆盖率

liudecai 2021-10-17 11:57 原文

我们做项目开发,肯定免不了要写单元测试,不管是 Java 项目、Python 项目、PHP 项目,甚至是 nodejs 项目,都应该要写单元测试,本小节就来介绍单元测试的覆盖率报告输出和展示,在后面的章节中我会介绍代码质量网关 Sonarqube 的使用。

我们的项目在构建时就可以运行单元测试并输出覆盖率的测试报告,Jenkins 也早就考虑到这些事项,我这里以 Java 项目为例子,为了便于直观地展示单元测试覆盖率报告我们要安装一个 Jenkins 插件 JaCoCo。不会安装 Jenkins 插件的同学可以参考我之前的文章。插件安装好后需要对构建任务做些配置,我这里还是以 demo-todo-list 这个任务为例。

在任务的【配置】中的【构建后操作】里面增加一个 【Record JaCoCo coverage report】步骤,一般情况下默认即可,如果你的项目有做特殊设置,例如单元测试覆盖率报告的目录自己有特殊设置过,那就要根据实际情况调整,匹配到正确的 jacoco 报告文件的目录位置。这里还可以做些关卡设置,例如,如果我们的单元测试覆盖率没有达到多少就让这个任务失败,这样可以以此作为规定,在公司内部达成共识,定一个合适的覆盖率指标,以后开发人员都必须遵守规定不能不写单元测试。

我这里的默认设置如下:
image.png
设置好后,我们再来构建一下该任务,就会发现左侧菜单栏多了一个【Coverage Trend】选项,并且右边还有一个【Code Coverage Trend】折线图,折线图会反映出单元测试覆盖率的变化情况。这两个地方都可以点击进去查看单元测试覆盖率的详细情况。

image.png

我这里的单元测试覆盖率如下图:
image.png

每一个 Java 的包名还可以点击进去查看某个类的具体覆盖率情况:
image.png
以上就是 Jenkins 输出单元测试报告的方式,如果你在使用过程中遇到什么问题欢迎留言讨论。

推荐阅读