该仓库以 Go + 标准测试框架为例介绍如何配置单测覆盖率上报。
/workspace/ ├── calculator.go # 计算器函数(加法和减法) ├── calculator_test.go # 单元测试 ├── go.mod # Go模块文件 ├── Makefile # 构建和测试工具 ├── Dockerfile # Docker容器配置 ├── docker-compose.yml # Docker Compose配置 └── README.md # 项目说明
make test 可以看到单测覆盖率结果。calculator_test.go 中的单测代码注释一些测试用例,再次执行 make test 可以看到单测覆盖率下降。洞察/单元测试覆盖率 中查看单测覆盖率结果,https://<your-repo-path>/-/insights/ut。dev 在 calculator.go 和 calculator_test.go 中添加一些代码和单测代码,再次执行 make test 查看单测覆盖率。dev 分支,创建 dev 到 main 的 PR,会触发 CI,可以在构建日志页看到增量覆盖率。该示例中 push 事件配置了全量单测覆盖率红线,pull_request 事件配置了增量单测覆盖率红线。可以根据需要修改,构造代码调整覆盖率查看效果。
Sum(a, b int) int - 返回两个整数的和Sub(a, b int) int - 返回两个整数的差测试用例覆盖了多种场景:
# 运行所有测试
make test
# 或者直接使用go test
go test -v ./...
# 生成文本格式的覆盖率报告
make coverage
# 生成HTML格式的覆盖率报告
make html-coverage
make clean
# 构建镜像
docker build -t go-test-coverage .
# 使用Docker运行测试
docker run --rm go-test-coverage make test
# 生成文本覆盖率报告
docker run --rm -v $(pwd):/app -w /app go-test-coverage make coverage
# 生成HTML覆盖率报告
docker run --rm -v $(pwd):/app -w /app go-test-coverage make html-coverage
运行 make coverage 会显示类似以下内容:
PASS coverage: 100.0% of statements ok calculator 0.001s
这表明所有代码语句都被测试覆盖到了。