Go 测试
Go 测试主线围绕 testing 包、测试文件约定和 table-driven 风格展开,是 Go 工具链中最基础的质量反馈入口。
#type / concept
#status / growing
#tech / dev
#resource / go
[!info] related notes
- 所属 MOC: Go 测试与质量 MOC
- 相邻总入口: Testing MOC
- 并列概念: Go benchmark, Go race detector
Go 测试
一句话定义
Go 测试是围绕标准库 testing 包、*_test.go 文件约定和 go test 命令建立起来的一套内建质量反馈机制。
核心机制 / 工作原理
Go 对测试的支持很原生:
- 用
*_test.go识别测试文件 - 用
TestXxx(t *testing.T)识别测试函数 - 用
go test统一执行
这使得测试不是外接插件式能力,而是工具链的一部分。
Go 测试里常见的一条风格主线是 table-driven tests,也就是:
- 用一组样例表驱动同一段断言逻辑
- 降低重复样板
- 更容易扩展边界条件
最小例子 / 最小场景
func TestAdd(t *testing.T) {
got := Add(1, 2)
if got != 3 {
t.Fatalf("want 3, got %d", got)
}
}
为什么这部分重要
Go 的很多工程优势并不只来自语言本身,也来自工具链默认把测试纳入日常开发路径。会写测试,才能真正进入 benchmark、竞态检测和回归验证。
边界与易混淆点
- 测试不是只会断言成功路径,还要覆盖边界和失败路径
- benchmark 也是
testing体系的一部分,但目标和普通测试不同 go test能跑通,不等于测试设计已经合理