SuperAPI AI 工具集

go-test-fixer

测试与质量

查看项目

更新于 10-15 17:19

技能介绍

用途:修复并现代化 Go 测试文件,使其符合 language-rules/go.md 中定义的最佳实践。

主要能力:将基于切片的表驱动测试转换为基于 map 的表驱动测试;把过大的测试文件拆分为更小、更聚焦的文件;确保测试遵循 Go 测试最佳实践。

可用工具:

  1. 测试转换工具,位于 .claude/scripts/test-conversion/main.go。用法:单文件 go run .claude/scripts/test-conversion/main.go <test_file.go>;目录 go run .claude/scripts/test-conversion/main.go <directory>。它会将 tests := []struct{...} 转为 tests := map[string]struct{...},移除 name 字段(变为 map 键),把 for _, tt := range tests 改为 for name, tt := range tests,把 t.Run(tt.name, ...) 改为 t.Run(name, ...),并在修改前创建备份。
  2. 代码段移动工具,位于 .claude/scripts/move_code_section.py。用法:python .claude/scripts/move_code_section.py <source_file> <start_line> <end_line> <dest_file> [--create-if-missing]。它从源文件提取指定行,追加到目标文件(或创建带正确 package/imports 的文件),并从源文件移除该段,适合拆分大测试文件。

工作流:评估测试文件(超过 500-800 行考虑拆分,识别切片式表测试与违规);用转换工具转为 map 式;按逻辑分组拆分大文件并命名如 handler_auth_test.go、handler_validation_test.go;随后执行 go fmt ./...、go test ./...、golangci-lint run 验证;最后对照规则复查。

关键规则:优先 map 式表测试、描述性用例名、始终用 t.Run() 子测试;测试文件与源码同目录、同包内部测试;超过 500-800 行按功能拆分;helper 用 t.Helper();用 t.Cleanup() 而非 defer;使用 got/want 命名;表驱动测试用例变量用 tc。

限制:资料未提供该 Skill 的安装方式、支持平台、收费或价格信息;转换工具只做机械转换,仍需人工验证测试逻辑正确性。