SuperAPI AI 工具集

create-tests-extract

测试与质量

查看项目

更新于 10-16 02:06

技能介绍

用途

create-tests-extract 用于把源码文件中体积庞大的内联测试块移动到相邻文件中,同时保持测试不被削弱。它强调三点结果:同样的有效测试覆盖、在需要的地方保留对私有项的访问、生产文件更清晰。

该技能接受一个输入 $request,表示源文件、模块或清理目标。

主要能力

  • 读取生产文件及其内联测试,识别仅由测试使用的辅助函数或 fixture,并判断测试是否依赖 super::* 或私有模块项。
  • 将测试分类为本地内联、相邻模块或真正的集成测试候选。
  • 选择最小的安全提取边界,优先采用 foo.rs + #[cfg(test)] mod foo_tests; + foo_tests.rs,或对目录模块使用 foo/mod.rs + tests.rs。
  • 避免把测试推到顶层 tests/,除非它们确实应当成为公开 API 的集成测试。
  • 在移动测试时添加最小的 #[cfg(test)] mod ...; 连接,保留 use super::*; 或等效导入,保持测试名称与属性,并将测试专用辅助函数随需要它们的套件一起移动。
  • 提取后运行范围最窄的相关测试,检查警告或可见性回退,并确认生产文件明显更易浏览。

使用方式

技能按步骤执行:

  1. 第 0 步:阅读并分类测试块。检查生产文件、内联测试模块、仅由测试使用的辅助函数或 fixture,以及测试是否依赖 super::* 或私有模块项。如果文件属于 Rust crate,在改变模块布局前先使用 rust 约定。成功标准是测试被分类为本地内联、相邻模块或真正的集成测试候选。
  2. 第 1 步:选择最小的安全提取边界。优先采用 foo.rs + #[cfg(test)] mod foo_tests; + foo_tests.rs,或对目录模块使用 foo/mod.rs + tests.rs。避免把测试推到顶层 tests/,除非它们确实应当成为公开 API 的集成测试。成功标准是新布局保留预期的可见性模型。
  3. 第 2 步:在无语义漂移的情况下提取。移动测试时添加最小的 #[cfg(test)] mod ...; 连接,必要时保留 use super::*; 或等效导入,保持测试名称与属性,将测试专用辅助函数随需要它们的套件一起移动。除非提取需要,否则不要重命名测试或重构生产模块。成功标准是移动后的测试仍能在同样的有效上下文中编译。
  4. 第 3 步:验证移动后的套件。提取后运行范围最窄的相关测试,检查警告或可见性回退,并确认生产文件明显更易浏览。成功标准是新布局通过测试并保持行为。

适用场景

适用于需要把过大的内联测试块整理到相邻文件、同时保持相同覆盖与私有访问模型的项目,尤其涉及 Rust 模块布局约定的场景。

限制与约束

该技能列出以下不可协商的规则:在移动任何内容前完整阅读源文件及其内联测试;保留原有的可见性与辅助访问模型;当私有访问重要时优先使用相邻测试模块而非集成测试;仅按模块连接所需改动生产代码;提取后运行范围最窄的相关测试。

护栏包括:不要意外把私有单元测试变成仅公开的集成测试;不要移动那些仍能提升所在位置可读性的小型说明性内联测试;不要超出请求的提取范围扩大重构;不要为了缩短生产文件而丢弃 fixture 或辅助覆盖。

输出约定

报告内容包括:创建或修改的文件、所选的提取布局、有意保留为内联的测试、移动后运行的验证。