在 Github 浏览开源项目时,有时会看到徽标显示项目的测试用例覆盖率,本文记录为 Golang 项目添加徽标的步骤。
最终效果如图,Coverage 徽标 即是通过 Github Actions 在 Coveralls 自动生成的。
配置 Coveralls
访问 https://coveralls.io/,通过 Github 登陆。
点击左侧边栏的 “Add Repos”,找到并打开需要提交报告的项目按钮
点击 Details 会看到项目测试覆盖率的详情,当前还未提交任何测试覆盖率报告,所以内容是空的。
配置 Github Actions
网上教程多是基于 Travis CI,最近注册发现已经不免费了。所以换用 Github Actions 作为 CI 工具,生成测试用例覆盖率。
Github Actions 教程初步了解可以参考:阮一峰《GitHub Actions 入门教程》
添加 Action 配置
在 Github Golang 项目下新建 .github/workflows 文件夹。
添加文件 ci-coveralls.yml 内容入下,借助 Marketplace / actions-goveralls 脚本来将测试报告提交到 Coveralls
name: Test and Push Coveralls
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
go:
- '1.19'
- '1.18'
steps:
- uses: actions/setup-go@v3
with:
go-version: ${{ matrix.go }}
- uses: actions/checkout@v3
- run: go test -v -coverprofile=profile.cov ./...
- name: Send coverage
uses: shogo82148/actions-goveralls@v1
with:
path-to-profile: profile.cov
flag-name: Go-${{ matrix.go }}
parallel: true
# notifies that all test jobs are finished.
finish:
needs: test
runs-on: ubuntu-latest
steps:
- uses: shogo82148/actions-goveralls@v1
with:
parallel-finished: true
这段配置描述的 Action 是在提交代码和 Pull Request 时会被触发,使用 Go 1.18 和 1.19 跑测试覆盖率,而后将生成的 “profile.cov” 文件提交到 Coveralls,最后再通知到 Coveralls 所有任务都已结束。
提交到 Github 后,再次修改代码提交,Github Actions 会触发运行。
运行结束后,到 Coveralls 网站刷新,可以看到详细的覆盖率报告。
图中粉色区域是一个统计图,最开始的时候覆盖率 100% 是绿色的,而后在不同模块添加测试用例,覆盖率在不断变化。
BADGE 区域点击 EMBED 弹出的页面可以复制 Markdown 或者 HTML 格式的徽标。
最后,将徽标补充道 README.md 文档中,提交到 Github 即可。