SuperAPI AI 工具集

go-test

编程与开发

查看项目

更新于 10-16 08:45

技能介绍

用途:这是一个 Go 单元测试辅助技能,面向需要为 Go 项目编写、执行和分析单元测试的场景,帮助完成从生成测试代码到输出覆盖率报告的流程。

主要能力:生成测试代码,针对指定 Go 文件或函数读取源码、分析函数签名与依赖后,产出包含 table-driven 结构、testify/assert 断言、gomonkey mock 外部依赖以及成功与失败用例的测试文件;运行测试,先通过 uname -m 检测系统架构再构建命令;生成并分析覆盖率报告,可输出 HTML 报告、显示总体覆盖率并按阈值判断是否达标;同时提供适合 CI/CD 流水线的覆盖率报告格式。

使用方式:技能会根据关键词判断意图,如“生成”“运行”“覆盖率”“全流程”,不明确时会调用 AskUserQuestion 询问。运行测试时按范围执行:全量为 go test ./...,指定包为 go test ./path/to/package/...,单文件为 go test ./path/to/file_test.go,单函数为 go test -run TestName ./package/。覆盖率相关命令包括 go test -coverprofile=coverage.out -covermode=atomic ./...、go tool cover -html=coverage.out -o coverage.html、go tool cover -func=coverage.out | grep total。所有架构的测试命令均包含 -v -cover -race;检测到 ARM64/aarch64 时自动添加 -gcflags="all=-l",该参数为 gomonkey 所必需。

项目配置示例:data-access-server 项目默认测试包为 ./services/ustask/...、./services/ckmove/...、./client/...,覆盖率阈值为 70%,必需框架为 testify 与 gomonkey。

限制与错误处理:常见问题包括 “provider not exist” 需检查 tRPC 配置文件,gomonkey panic 需添加 -gcflags="all=-l",race detected 时提供竞态报告与修复建议,timeout 时建议使用 -timeout 参数或优化测试。使用 mock 时应通过 defer patches.Reset() 确保清理。除上述内容外,其他平台、收费与价格信息暂未提供。