第二十二天:为测试产生覆盖率报告

每当我们为专案写测试的时候,其实就是拿另一个程序来执行我们写的程序,看看是不是能将程序码里所有可能的路径都「走」过一遍,确保不会有意料外的错误发生。而这个所有路径被走过的比例,就是所谓的覆盖率(Code Coverage)。市面上的测试框架都支援在跑完测试後,一并产生覆盖率报告,而身为开发者的我们,就可以用这个报告了解目前程序码库的健康状态。

在 IntelliJ IDEA 里产生覆盖率报告

IntelliJ IDEA 在执行测试及产生覆盖率报告等方面已经非常成熟,支援市面上绝大多数的测试工具,而各测试框架通常也有推出对应的 Plugin 供安装。因此,在 IntelliJ IDEA 里取得覆盖率报告只需要一个按键。

首先打开 ShoppingCartTest 测试类别,您会看到左边的编辑器侧边栏上依据不同的测试范围,有数个绿色播放键可以点选。我们先选最大范围,也就是 class ShoppingCartTest 这一行左边的绿色播放键。点下去後会出现下拉式选单,第一个是我们在写测试时已经用过的 Run、第三个 Run 'ShoppingCartTest' with Coverage 就可以在跑完测试後同时产生覆盖率报告。

查看覆盖率报告

IntelliJ IDEA 在产生完覆盖率报告後,会自动在右边开启 Coverage 面板,里面会依照 Package 的结构显示各层级的档案。依照路径逐一点选到 ShoppingCart 类别,我们会看到面板上会依照 Class、Method、Line 3 种维度显示覆盖率。我们在之前的练习过程中,针对 3 个方法 add()totalPrice()count() 都有写对应的测试,所以目前该类别的覆盖率是 100%。

点开 ShoppingCart 类别,您也会发现 IntelliJ IDEA 也会很贴心的在编辑器侧边栏行号的旁边以「绿色」的色带标示该行是否有被覆盖(若该行只有符号没有逻辑的话就会被忽略);若是打开 main.kt 则会看到行号上有「红色」的色带表示有东西没被测试到。用这种颜色区分的方式标示测试覆盖率,可谓一目了然。

注:色带的颜色跟您使用的 IDE 布景主题有关,笔者示范时使用的是 Cyan Light 。若您的布景主题与我不同,那看到的颜色也会有差异。

除了可以从 Coverage 面板看测试覆盖率报告外,只要覆盖率报告产生出来後再打开 Project 面板,就可以看到在 src/main/kotlin 结构下的资料夹名称旁边,都会以灰色的字样标记每个 Package 目前的覆盖率数值,提供我们另一种浏览覆盖率报告的方式。

小结

今天我们在 IntelliJ IDEA 里,学习怎麽在执行测试的时候产生覆盖率报告,从数据面来了解程序码库的现况。并以 ShoppingCart 类别及 main.kt 档案为例,实际看到有覆盖及没有覆盖在 IntelliJ IDEA 是怎麽被标示的,希望对大家了解测试覆盖率有帮助。

文章的最後还是要提醒一下,覆盖率的数字只是一个指标。我们虽然可以利用这个数值来推测程序码库的健康状态,但一味的追求覆盖率并没有意义,确实设立哪些地方该写测试、维持合理覆盖率,才是将团队资源用在刀口上的作法。

明天我们会再跳回 TeamCity 那端,看看怎麽在 TeamCity 上产生跟 IntelliJ IDEA 一样的测试覆盖率报告。

参考资料


<<:  Day 26:「按钮博物馆」- 轻松变化各种按钮元件

>>:  那些被忽略但很好用的 Web API / History

【HTML】【CSS】图片下方的空白

【前言】 本系列为个人前端学习之路的学习笔记,在过往的学习过程中累积了很多笔记,如今想藉着IT邦帮忙...

[Day 4]餐前浓汤-Vagrant环境设定及BeautifulSoup安装

昨天我们介绍了Python跟Vagrant这两个东东是干啥的 以及这两个东东如何安装 今天我们会把剩...

Day9-滚动视差(下)_後有图样

今天继续说滚动视差 球球的部分先在scroll_thing的下方加上球球的div <div c...

Day4-丛集是在集这个 Node介绍

在上一章我们提到了丛集是所谓的节点管理者,其中控制平面控制着k8s内所有的节点与资源。 那麽,所谓的...

C# 入门笔记01

程序架构 Namespace (自订命名空间) 就是由自己写的程序库之名称,一个程序库只能有一个自订...