首页 > 编程笔记

GitHub Coveralls工具介绍(测试覆盖率)

Coveralls 是由 Lemur Heavy Industries 运营的代码覆盖率检测服务。借助 Travis CI 或 Jenkins 等持续集成服务器,向用户报告自动测试的测试覆盖率(图 1)。


图 1 代码覆盖率的报告

该服务支持 Ruby/Rails、Python、PHP、JavaScript/Node.js、C/C++、Java、Scala 等语言。

除简略报告外,用户还可以查看代码每部分执行了多少次测试等信息(图 2)。


图 2 详细报告

Coveralls 可以为每一个 Pull Request 生成一份报告,我们建议各位使用这项服务,以时常提醒自己注意覆盖率问题。另外,由于用户可以通过详细报告了解哪些代码没有被测试,所以还有助用户改进自动测试的内容,提高测试效率。

这项服务对开源开发是免费的,私有仓库则需要支付一定费用,具体金额请查看官方网站。

下面我们来举例讲解 Coveralls 的安装方法。

Coveralls的安装

Coveralls 的安装非常简单,但使用时有前提条件。

只要满足以上条件,就可以立即使用 Coveralls。

这次我们借用 Ruby 开发的 CMS——lokka来进行安装。

1) 注册

访问 Coveralls 的首页并点击 FREE SIGN UP,可以经由 GitHub 注册账户。

2) 添加对象仓库

账户注册成功后再到 Coveralls 的首页点击 ADD REPO,这里可以添加需要生成覆盖率报告的仓库。

页面中会列表显示我们在 GitHub 端的仓库(图 3),添加时只需要将仓库名右边的开关设置为 ON。


图 3 仓库列表

返回 Coveralls 首页,我们能看到刚才设置为 ON 的仓库已经成为报告对象。点击链接会进入图 4 所示的页面,这个页面为我们讲解了如何编写 Coveralls 的配置文件以及需要安装哪些插件。


图 4 Coveralls 的配置解说页面

3) 编写配置文件

Coveralls 的配置文件是 .coveralls.yml。我们将这个文件放到仓库路径下。文件内容如下所示。

service_name:travis-ci  ←描述正在使用的CI

如果各位使用其他的持续集成服务器(Jenkins 等),最好按照自己的需要将 service_name 改成简单易懂的名称。另外,这种情况下 repo_token 需要描述成 repo_token:xxxxxyyyyyzzzz 的形式。repo_token 可以在图 4 所示的页面中找到。

4) 添加 gem

如果使用 Ruby 或 Rails,还需要添加 gem。使用其他语言的读者请查看官方网站的相应文档。

我们在 Gemfile 中添加下面一行文字。

gem 'coveralls', require:false

另外,还要在 ./spec/spec_helper.rb 或 ./test/test_helper.rb 等各位正在使用的测试工具的 helper 文件中添加下面这段代码。

require 'coveralls'
Coveralls.wear!

使用 Rails 的读者请替换成下面这段代码进行设置。

require 'coveralls'
Coveralls.wear!('rails')

执行 bundle install命令后,记得要将所有修改过的文件提交一遍。

5) 查看报告

完成上述设置后进行 push 操作,Coveralls 就会在 Travis CI 自动测试后生成报告。Coveralls 报告的 URL 为 https://coveralls.io/r/用户名/仓库名。

与 Travis CI 一样,Coveralls 也提供了让 README.md 显示相关信息的标记。在报告下部 README BADGE 栏内的图片下方可以找到 Get badge URLs,点击之后便可获得 URL(图 8.10)。将 URL 添加至 README.md 文件后,我们就可以在 GitHub 上看到与 README BADGE 栏中同样的图片了。


图 5 Coveralls 的标记

推荐阅读