用途:为 Go 项目编写可靠、易维护的测试,遵循 TDD 方法论。适用场景包括:编写新的 Go 函数或方法、为现有代码补充测试覆盖、为性能关键代码创建基准测试、为输入校验实现模糊测试、在 Go 项目中实践 TDD 流程。
主要能力:
- TDD 工作流:RED(先写失败测试)→ GREEN(写最小代码使其通过)→ REFACTOR(在测试通过前提下改进代码)→ REPEAT。
- 表驱动测试:以结构体切片定义 name、输入、期望值与 wantErr,配合 t.Run 组织用例,覆盖正向与错误路径。
- 子测试与子基准:用 t.Run 组织相关测试,用 t.Parallel() 并行执行独立子测试,注意捕获循环变量。
- 测试辅助:t.Helper()、t.Cleanup()、t.TempDir()、断言辅助函数,以及基于 testdata/ 的 golden file 测试(支持 -update 标志更新)。
- 接口式 Mock:为依赖定义接口并在测试中提供 Mock 实现。
- 基准测试:b.ResetTimer()、多尺寸子基准、内存分配对比(+ 拼接、strings.Builder、strings.Join)。
- 模糊测试(Go 1.18+):f.Add 添加种子语料,f.Fuzz 内做属性校验。
- HTTP 处理器测试:httptest.NewRequest、httptest.NewRecorder。
- 覆盖率与 CI 集成:-cover、-coverprofile、go tool cover -html/-func,配合 -race 运行。
必要用法(原样保留):go test ./...;go test -v ./...;go test -run TestAdd ./...;go test -run "TestUser/Create" ./...;go test -race ./...;go test -cover -coverprofile=coverage.out ./...;go test -short ./...;go test -timeout 30s ./...;go test -bench=. -benchmem ./...;go test -fuzz=FuzzParse -fuzztime=30s ./...;go test -count=10 ./...;go tool cover -html=coverage.out;go tool cover -func=coverage.out。
限制与建议:文中给出覆盖率参考目标(关键业务逻辑 100%、公共 API 90%+、一般代码 80%+、生成代码排除),属建议而非强制;不要直接测试私有函数而应通过公共 API 测试;避免 time.Sleep、避免忽略不稳定测试、不要过度 Mock;错误路径需覆盖。该技能未提供版本要求、安装命令、依赖与收费信息,官方未提供相关说明。