用途:在代码已修改完成后,找出受影响的测试并修复,使测试匹配新的行为,最后引导用户自行运行验证。该技能不改生产代码,只更新测试。
主要能力与流程:
- 识别改动:用 git diff --name-only、git diff --stat 列出被修改的生产文件,忽略测试文件、配置和文档。
- 查找受影响测试:在所有测试文件中搜索被改包的导入与函数/类型引用,例如:rg "github.com/openshift/lightspeed-operator/<changed_package>" --type go -g '_test.go',以及 rg "<ChangedFunctionOrType>" --type go -g '_test.go'。控制器改动还需检查 internal/controller/suite_test.go 与 test/e2e/。
- 分析影响:判断签名变化、行为变化、被删代码、新代码、接口变化等是否破坏现有测试;新测试是否需要由用户确认。
- 更新测试:对 Ginkgo 测试更新 Expect() 断言、mock 返回值、函数调用参数、错误信息检查和 Eventually() 超时;对标准 Go 测试更新表驱动用例、mock、参数与错误断言。常见修复包括错误常量重命名、签名变更、资源结构变化、OwnerReference 逻辑变化。
- 校验语法:对修改的测试文件执行 go fmt <modified_test_file>,若格式变化明显可能存在语法错误。
- 报告与验证:列出更新的测试文件、每处改动及数量,然后引导用户运行 make test(单元测试)、make test-e2e(需集群)、make lint(代码风格)。测试失败时检查具体失败并调整断言。
限制:
- 不修改生产代码,只更新测试以匹配新行为,不可反向修改。
- 测试更新期间不做重格式化或 lint 修复,留待验证阶段。
- 测试期望行为不明确时须询问用户。
- 不自动运行 make test,由用户决定何时运行。
- 其他未提供信息暂未提供。