code-testing-generator logo

code-testing-generator

打开

微软开源的多语言智能体,先研究仓库再编写、运行并校验单元测试:任务完成率 92.1%,对比原生 Copilot 的 78.9%。

分享:

code-testing-generator 是微软 .NET 团队开源的智能体,负责编写单元测试并证明它们真的有效。一句「生成单元测试」的提示留了太多空白:哪些代码需要测试、项目用哪个框架、测试放哪里、构建如何发现它们、应当断言什么。这个 agent 通过先读取仓库来定夺这些决定,然后规划、编写、运行并校验它产出的测试。它托管在 MIT 许可的 dotnet/skills 仓库的 dotnet-test 插件内,支持多语言,覆盖 .NET、Python、Go、TypeScript、Java、Rust 等。

核心功能

  • 仓库感知的规划:不做一次性生成,而是走研究-规划-实现(RPI)流水线。它识别语言与测试框架、读取既有测试了解惯例、找出真实的构建与测试命令。这正好解决「本地能编译、CI 里却从不运行,因为没有注册」的失效模式。
  • 三种策略:直接(立即编写并校验)、单次(研究并规划一次后实现)、迭代(对大规模范围或覆盖目标反复进行)。
  • 校验关卡:完成前执行五项检查,包括推理「哪些小改动应当让测试失败」(一种轻量变异测试)、查找薄弱或缺失的断言、把每个请求场景映射到一个测试、构建整个工作区并跑完整套件、确认仓库自身的测试命令能发现新测试。
  • 天生安全:从不修改生产代码,并避免调用外部 URL、绑定端口或依赖精确计时的测试。
  • 在你已有的工具里运行:可用于 GitHub Copilot CLI,也通过插件支持用于 Visual Studio Code 与 VS Code Insiders,Visual Studio 支持在途中。

基准表现

在微软内部用真实仓库构建的 152 个任务基准上,该 agent 完成 140 个(92.1%)对比原生 GitHub Copilot 的 120 个(78.9%),错误减少 63%。增益集中在模糊提示:89 个中 79 个(88.8%)对比 59 个(66.3%);针对 diff 的 15 个任务它全过,而原生 Copilot 一个没过。它还少生成了 2.3% 的测试(6,963 vs 7,129),行覆盖率几乎相同(72.4% vs 72.2%),任务耗时约快 5.5%。在更难的外部 SWE Atlas 基准上差距依旧:16/44 对比 12/44。

适用场景

  • 为未测试模块补测试、在发布关卡前提高覆盖率。
  • 审查 PR diff,确保新代码真的被覆盖。
  • 金融、医疗、公共部门等受监管或重审计栈,需要可证明有意义的测试。
  • 多语言单仓,想统一一套测试惯例。

解决的问题

  1. 通过但无断言的测试:agent 检查断言与变异,而不只是看 CI 是否变绿。
  2. 未注册的测试项目:它找到真正的构建与测试命令,让 CI 真的运行你写的东西。
  3. 模糊提示:它自己定框架、位置与惯例。

定价方案

开源且免费。

方案 价格 说明
agent + skills $0 dotnet/skills 中 MIT 许可。编码 agent 与模型费用另计。

快速开始

  1. 在 GitHub Copilot CLI 添加插件:/plugin marketplace add dotnet/skills,再 /plugin install dotnet-test@dotnet-agent-skills
  2. 重启 CLI,从 agent 列表选择 code-testing-generator
  3. 输入「generate unit tests」,审查计划、测试与最终检查。

常见问题

它测试什么?

仅单元测试。集成、端到端、浏览器与性能测试目前不在范围。

免费吗?

免费,MIT 开源。

会改生产代码吗?

不会。它读取生产代码获取上下文,但只写测试文件。

替代方案

  • Aider:通用的 CLI 编码 agent,用于提示与编辑。
  • Claude Code:终端编码 agent,可搭配自定义 skills。
  • codex-cli:OpenAI 的智能体 CLI,同样可用 skills 扩展。

使用技巧

  1. 把它用在「模糊提示」场景,这是它相比普通 Copilot 提升最大的地方。
  2. 看重最终检查而非绿色测试数量:断言质量才是真正的收益。
  3. 若仓库用内部框架,就 fork 官方语言指南,让 agent 匹配你的惯例。

总结

code-testing-generator 是微软对「测试通过却证明不了什么」的回应。通过先研究仓库再逐一校验每条测试,它把复制粘贴式的提示变成可靠的信任循环,而且数字在通用助手最吃力的地方表现最好。在 GitHub Copilot CLI 中试用,或阅读技术文章

评论

还没有评论。成为第一个评论的人!