SuperAPI AI 工具集

golang-testing

测试与质量

查看项目

更新于 10-15 17:33

技能介绍

用途:为 Go 项目按 TDD(红-绿-重构)流程编写可靠、易维护的测试,并组织测试结构、性能基准与覆盖率检查。

主要能力:

  1. TDD 工作流:先写失败测试,再写最小实现使其通过,最后重构。
  2. 表驱动测试:以用例表加 t.Run 子测试的方式覆盖正常值与错误路径,常配合 reflect.DeepEqual 比较结果。
  3. 子测试与并行测试:用 t.Run 组织相关用例,独立用例可用 t.Parallel()(注意捕获循环变量)。
  4. 测试辅助:t.Helper() 标记辅助函数,t.Cleanup() 清理资源,t.TempDir() 创建自动回收的临时目录,以及 golden 文件对比(可用 go test -update 更新)。
  5. 接口打桩:通过定义接口与 Mock 实现替换依赖,测试服务逻辑。
  6. 基准测试:b.N 循环、b.ResetTimer()、b.Run 分尺寸对比,配合 -benchmem 观察内存分配。
  7. 模糊测试(Go 1.18+):f.Add 提供种子语料,f.Fuzz 验证输入不变量,如 JSON 往返一致性、比较函数对称性。
  8. 覆盖率:go test -coverprofile=coverage.out ./...、go tool cover -html=coverage.out、go tool cover -func=coverage.out。
  9. HTTP 处理器测试:用 httptest.NewRequest 与 httptest.NewRecorder 断言状态码与响应体。

常用命令:go test ./...;go test -v ./...;go test -run TestAdd ./...;go test -race ./...;go test -bench=. -benchmem ./...;go test -fuzz=FuzzParse -fuzztime=30s ./...;go test -count=10 ./... 检测不稳定测试。

适用场景:新增或修改 Go 函数、为既有代码补测试、为性能敏感代码建基准、为输入校验加模糊测试、在 Go 项目中落地 TDD。

限制与注意事项:应测试行为而非实现,不直接测私有函数;避免在测试中使用 time.Sleep,改用通道或条件;不要忽略不稳定测试;不必到处打桩,优先集成测试;不要跳过错误路径。资料未提供具体版本要求(模糊测试需 Go 1.18+)、安装方式、收费信息及平台支持范围。