第一章:go test框架简介
Go语言内置的 go test 框架为开发者提供了简洁高效的单元测试能力,无需引入第三方库即可完成函数验证、性能分析和代码覆盖率检测。该框架遵循约定优于配置的原则,自动识别以 _test.go 结尾的文件,并执行其中特定命名格式的测试函数。
测试函数的基本结构
在 Go 中,每个测试函数必须以 Test 开头,接收一个指向 *testing.T 的指针参数。例如:
func TestAdd(t *testing.T) {
result := Add(2, 3)
if result != 5 {
t.Errorf("期望 5,但得到了 %d", result)
}
}
上述代码中,t.Errorf 用于报告测试失败,但不会立即中断执行。若需中断,可使用 t.Fatalf。
运行测试命令
通过终端执行以下指令运行测试:
go test
若要查看详细输出,添加 -v 参数:
go test -v
性能测试则使用 Benchmark 前缀函数,并通过 -bench 标志启用:
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(2, 3)
}
}
执行命令:
go test -bench=.
常用测试标志对比
| 标志 | 作用 |
|---|---|
-v |
显示详细日志,包括 t.Log 输出 |
-run |
使用正则匹配测试函数名,如 go test -run=Add |
-bench |
启动基准测试 |
-cover |
显示代码覆盖率 |
go test 与 Go 工具链深度集成,支持直接生成覆盖率报告:
go test -coverprofile=coverage.out
go tool cover -html=coverage.out
这将打开浏览器展示可视化覆盖情况。整个流程无需外部依赖,极大简化了测试工作流。
