1. 环境准备
确保Debian系统已安装Golang(建议版本≥1.19,可通过go version
验证)。若未安装,执行以下命令安装:
sudo apt-get update && sudo apt-get install -y golang-go
验证安装结果,确保输出类似go version go1.19.8 linux/amd64
。
2. 编写测试文件
在项目目录中,为需要测试的Go源文件(如main.go
)创建对应的测试文件(命名规则:原文件名_test.go
)。测试文件需导入testing
包,并定义以Test
开头的测试函数(参数为*testing.T
)。例如:
// main.go(被测代码) package main func Add(a, b int) int { return a + b } // main_test.go(测试代码) package main import "testing" func TestAdd(t *testing.T) { result := Add(1, 2) if result != 3 { t.Errorf("Add(1, 2) = %d; want 3", result) } }
此示例测试Add
函数的正确性。
3. 运行基础覆盖率测试
使用go test
命令的-cover
标志运行测试,直接查看包级别的覆盖率百分比:
go test -cover
输出结果示例:
PASS coverage: 100.0% of statements ok your_module_path 0.001s
该命令会执行当前目录下的所有测试文件,并显示代码覆盖率。
4. 生成详细覆盖率报告
若需更详细的覆盖率信息(如文件级、行级覆盖情况),需生成覆盖率数据文件(.out
格式),并通过go tool cover
转换为可视化报告:
# 生成覆盖率数据文件(默认输出到coverage.out) go test -coverprofile=coverage.out ./... # 将覆盖率数据转换为HTML格式(生成coverage.html) go tool cover -html=coverage.out -o coverage.html
执行后,用浏览器打开coverage.html
,即可查看详细的覆盖率报告:
5. 高级用法:集成CI/CD与优化
codecov/codecov-action
工具上传报告,实现自动化监控。例如:jobs: coverage: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Set up Go uses: actions/setup-go@v5 with: go-version: '1.19' - name: Run tests with coverage run: go test -coverprofile=coverage.out ./... - name: Upload coverage report uses: codecov/codecov-action@v3 with: file: ./coverage.out
go tool cover -func=coverage.out
命令排序未覆盖函数,优先提升低覆盖率模块;generated.go
),避免干扰报告结果:grep -v "generated.go" coverage.out > filtered.out go tool cover -html=filtered.out