第二十三天:在 TeamCity 上产生覆盖率报告

昨天介绍了测试覆盖率的概念,也在 IntelliJ IDEA 里将 ShoppingCart 类别的测试覆盖率实际算出来给读者们看。不过实际在团队合作上,覆盖率报告通常是由 CI 主机自动产生,给技术主管定期检阅用。所以今天我们就要设定 TeamCity 自动在每次执行建置时一并产生覆盖率报告。

设定 Build Step 产生覆盖率报告

TeamCity 内建就支援 JVM 生态系的覆盖率报告工具,因此我们什麽 Plugin 都不用装,直接在对应的 Build Step 上增加设定即可。首先打开专案的 Build Steps 设定,修改第 4 步 Build 的动作。

在 Build Step 设定的下方有一个 Code Coverage 的区块,把 Choose coverage runner 从 No coverage 改成 IntelliJ IDEA,而 Classes to instrument 则输入 io.kraftsman.*,表示只要是在 io.kraftsman 这个 Package 底下的所有 Class 都要产生覆盖率报告,完成後按 Save 储存。

设定完成後按右上角的 Run 按钮,实际跑一次建置让覆盖率报告产生出来。

观看覆盖率报告

建置动作完成後,进到该次 Build 详细页面,我们会发现中间多了一个 Code Coverage 的页签,进入该页签就可以看到 TeamCity 把覆盖率报告直接显示在页面上,而不需要将产生的报告网页另外上传到其他主机上,非常方便!

从画面的截图可以看到,TeamCity 的覆盖率报告跟我们在 IntelliJ IDEA 上看到的内容一样,都可以取得覆盖率数值,也可以看到实际上程序码的哪些行有被测试到。这些资讯都可以协助我们开发人员了解现有程序码库里的各项指标。

小结

今天看完 TeamCity 的覆盖率报告设定,会不会觉得太轻松了呢?果然搭载跟 IntelliJ IDEA 相同的覆盖率引擎就是不一样,不需要写复杂的设定档,介面上点点按按就搞定,身为写 Kotlin 的开发者真是太幸褔啦!

不过虽然 TeamCity 产生覆盖率报告很简单,但对於技术主管来说,看覆盖率报告背後的目的,其实是想知道程序码库的状态及趋势。所以若是 TeamCity 能在覆盖率数值降低时通知我们是不是更方便呢?明天,我们就来探索一下 TeamCity 在 Failure Conditions 上的功能!

参考资料


<<:  [Day24] Rocket Web 框架 (Part 1)

>>:  从零开始的8-bit迷宫探险【Level 20】搜集水晶可以召唤神龙吗?

【左京淳的JAVA学习笔记】第二章 阵列与列表

学习重点 一维阵列 多维阵列(阵列内含有阵列,形成多层结构) 列表(java.util.ArrayL...

DAY30 献给看到这里的你

今天就是我铁人赛的最後一天了,像我这样的新手也没能想到我能这样子完赛,当初也是课业需要来试试铁人赛,...

後记

这是铁人赛的最後一篇文章,我想在这个结尾分享为什麽我会写这个主题,这是因为几个月前的某一天我正在与跨...

[机派X] Day4 - Bash 指令原来如此容易

引言 今天是机派X系列文章的第四天。 昨天介绍了 Bash 的基本概念,大家都熟悉了吗? 本篇将介绍...

Day7 我想知道它哪里比我好很多 在你心中它和我有什麽不同

JavaScript feature 随着越来越深入JavaScript,现在所考察和学习到的co...