第一章:go test框架简介
Go语言内置的go test命令及其配套的testing包,为开发者提供了轻量且高效的单元测试支持。无需引入第三方库,即可完成函数级验证、性能基准测试和代码覆盖率分析。测试文件遵循_test.go命名规则,与被测代码放在同一包中,便于访问包内变量和函数。
测试函数的基本结构
每个测试函数以Test为前缀,接收*testing.T类型的指针参数。通过调用t.Error或t.Errorf报告错误,而t.Log可用于输出调试信息。例如:
func TestAdd(t *testing.T) {
result := Add(2, 3)
expected := 5
if result != expected {
t.Errorf("期望 %d,但得到 %d", expected, result)
}
}
执行go test命令时,Go工具链会自动查找并运行所有符合规范的测试函数。
运行测试与常用选项
使用命令行执行测试是标准做法。常见指令包括:
go test:运行当前包的所有测试go test -v:显示详细输出,包含每个测试函数的执行情况go test -run TestName:仅运行匹配正则表达式的测试函数go test -cover:显示代码覆盖率
| 选项 | 作用 |
|---|---|
-v |
显示详细日志 |
-run |
按名称过滤测试 |
-cover |
输出覆盖率 |
基准测试
性能测试函数以Benchmark开头,接收*testing.B参数。框架会自动循环多次调用以评估性能表现:
func BenchmarkAdd(b *testing.B) {
for i := 0; i < b.N; i++ {
Add(2, 3)
}
}
b.N由运行时动态调整,确保测量结果具有统计意义。执行go test -bench=.可运行所有基准测试。
