微软开源 MIT 许可的 code-testing-generator,可识别仓库语言、测试框架与构建命令,并自主规划、生成和验证测试。其内部 152 项基准完成率为 92.1%,高于相同模型下原生 Copilot 的 78.9%,优势主要来自模糊需求和差异代码测试。
人工智能
Model Context Protocol
Microsoft 已将 code-testing-generator 开源。这是一个支持多种编程语言的 Agent,能够编写单元测试,并验证这些测试确实可以正常运行。它随 dotnet-test 插件一起发布,位于采用 MIT 许可证的 dotnet/skills 仓库中。
该 Agent 瞄准了编码助手通常未能解决的一个空白。一条类似“生成单元测试”的 prompt,并没有说明应该使用哪个测试框架、测试文件应放在哪里,或者该使用哪些断言。code-testing-generator 会先读取代码仓库,再做出这些决定。在编写任何内容之前,它会先了解仓库,随后规划、编写、运行并检查自己生成的测试。在 Microsoft 内部包含 152 项任务的基准测试中,它完成了 140 项,而原版 GitHub Copilot 完成了 120 项。两种配置使用的是相同的模型和 prompt。
是的。它是一套包含 skills 的 Agent 定义,并非托管服务,因此可以在你现有的编码 Agent 中运行,代码也会保留在本地。
公司阶段:从个人维护者到更大规模的公司均可实际采用。初创公司和中型市场团队受益最大,因为该 Agent 能够完成代码仓库调研工作,而小型团队通常没有时间把这些知识整理并编码成规则。企业则可以 fork 针对不同语言的指导规则,使其适配内部框架。
适用行业:受到严格监管或高度依赖审计的软件领域,包括金融服务、医疗健康、保险和公共部门;也适合正在偿还遗留测试债务的平台团队。
应用场景:为未经测试的模块补充测试、针对 pull request 的 diff 生成测试、在发布门禁前提高覆盖率,以及统一多语言 monorepo 中的测试规范。
它通过 Research-Plan-Implement(RPI,研究—规划—实现)流水线协调工作。它会在代码仓库中搜索需要测试的代码,识别编程语言和测试框架,阅读现有测试以了解项目约定,并找出真正使用的构建与测试命令。最后这一步针对的是一种具体故障:某个测试项目在本地可以成功构建,但由于没有被任何机制注册,在 CI 中从未真正运行。
随后,该 Agent 会从三种策略中选择一种。Direct 策略会立即编写并验证测试;Single pass 策略只运行一个周期;Iterative 策略则会针对较大的范围或覆盖率目标重复这一过程。它绝不会修改生产代码,同时会避免生成调用外部 URL、绑定端口或依赖执行时序的测试。
在报告任务完成之前,该 Agent 会执行五项检查。它会推断哪些细微代码改动应该导致测试失败,这是一种轻量级的 mutation testing。它会查找薄弱或缺失的断言,将用户要求的每个场景映射到对应测试,构建完整 workspace 并运行完整测试套件,同时确认代码仓库自身的测试命令能够发现新增测试。
在 Microsoft 基于真实代码仓库构建、包含 152 项任务的内部基准测试中,使用相同模型和 prompt 时,该 Agent 完成了 140 项任务(92.1%),原版 GitHub Copilot 则完成了 120 项(78.9%),失败次数减少了 63%。
提升主要集中在特定类型的任务上。在 89 条模糊 prompt 中,该 Agent 成功解决了 79 条(88.8%),而原版 Copilot 解决了 59 条(66.3%),失败次数从 30 次降至 10 次。在 63 条详细 prompt 中,两者都完成了 61 条(96.8%)。在 15 项针对特定 diff 的任务中,该 Agent 15 项全部通过,而原版 Copilot 一项都未通过。
值得注意的是,该 Agent 生成的测试数量减少了 2.3%(6,963 个,对比 7,129 个),但行覆盖率实际上基本相同(72.4%,对比 72.2%)。平均任务耗时为 359 秒,而原版 Copilot 为 380 秒。每项已完成任务的 token 使用量则高出 3.2%。
在 45 项 .NET 任务中,Claude Opus 4.8 搭配该 Agent 时完成了 43/45,原版配置为 35/45;GPT-5.5 搭配该 Agent时完成了 41/45,原版配置为 36/45。在难度更高的外部 SWE Atlas 基准测试中,任务完成数为 16/44,而原版配置为 12/44。
这是由 Microsoft .NET 团队推出的开源、采用 MIT 许可证、支持多种编程语言的单元测试 Agent。
Research-Plan-Implement 流水线以理解代码仓库的规划流程,取代一次性生成。
在使用相同模型的情况下,任务完成率达到 92.1%,原版 Copilot 为 78.9%。
提升几乎全部来自模糊 prompt 和针对 diff 的请求。
测试数量更少、覆盖率相同、速度快 5.5%——重点是可靠性,而不是数量。
欢迎查看技术细节和代码仓库。也欢迎在 Twitter 上关注我们,别忘了加入拥有超过 15 万名成员的机器学习 SubReddit,并订阅我们的 Newsletter。等等!你使用 Telegram 吗?现在也可以加入我们的 Telegram。
需要与我们合作,推广你的 GitHub Repo、Hugging Face Page、产品发布或 Webinar 等内容吗?欢迎联系我们。
Michal Sutter 是一名数据科学专业人士,拥有帕多瓦大学数据科学理学硕士学位。凭借在统计分析、machine learning 和 data engineering 方面的扎实基础,Michal 擅长将复杂数据集转化为可付诸行动的洞察。