SuperAPI AI 工具集

golang-testing

测试与质量

查看项目

更新于 10-16 09:47

技能介绍

用途:为 Go 项目编写可靠、易维护的测试,遵循 TDD 方法论。适用场景包括:编写新的 Go 函数或方法、为现有代码补充测试覆盖、为性能关键代码创建基准测试、为输入校验实现模糊测试、在 Go 项目中实践 TDD 流程。

主要能力:

  1. TDD 工作流:RED(先写失败测试)→ GREEN(写最小代码使其通过)→ REFACTOR(在测试通过前提下改进代码)→ REPEAT。
  2. 表驱动测试:以结构体切片定义 name、输入、期望值与 wantErr,配合 t.Run 组织用例,覆盖正向与错误路径。
  3. 子测试与子基准:用 t.Run 组织相关测试,用 t.Parallel() 并行执行独立子测试,注意捕获循环变量。
  4. 测试辅助:t.Helper()、t.Cleanup()、t.TempDir()、断言辅助函数,以及基于 testdata/ 的 golden file 测试(支持 -update 标志更新)。
  5. 接口式 Mock:为依赖定义接口并在测试中提供 Mock 实现。
  6. 基准测试:b.ResetTimer()、多尺寸子基准、内存分配对比(+ 拼接、strings.Builder、strings.Join)。
  7. 模糊测试(Go 1.18+):f.Add 添加种子语料,f.Fuzz 内做属性校验。
  8. HTTP 处理器测试:httptest.NewRequest、httptest.NewRecorder。
  9. 覆盖率与 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;错误路径需覆盖。该技能未提供版本要求、安装命令、依赖与收费信息,官方未提供相关说明。