Monorepo 测试中的共享质量资产

解释为什么 contracts、testkit 和 evals 应该作为 monorepo 测试体系的一等公民,而不是散落在各项目里的辅助文件。

#type / concept #status / growing #tech / dev / test

[!info] related notes

Monorepo 测试中的共享质量资产

一句话定义

在同时包含前端、BFF、微服务和 agent 的 monorepo 里,真正决定测试体系是否工程化的,往往不是测试框架本身,而是共享质量资产是否被统一组织和版本化。

三类最关键的共享资产

packages/contracts

这里承载:

  • OpenAPI / JSON Schema / AsyncAPI / Pact
  • DTO 和消息边界
  • 服务间共享协议

它决定的是“系统边界是否清晰”。

packages/testkit

这里承载:

  • fixture
  • fake
  • factory
  • sandbox helper
  • 通用测试环境脚手架

它决定的是“测试能否低成本复用,而不是每个项目都重造一套”。

packages/evals

这里承载:

  • agent 数据集
  • graders
  • 阈值
  • 基线结果

它决定的是“agent 质量能否被持续比较和回归”。

为什么它们必须是一等公民

如果这些内容只是散落在各项目目录里的辅助文件,很快会出现:

  • 协议版本不一致
  • fixture 各写各的,难以复用
  • eval 数据集不透明,无法做版本比较
  • CI 无法基于共享资产变更触发正确测试

而一旦把它们提升成仓库级共享层,测试体系才有机会真正协同。

它们和代码本身的关系

这些资产不是测试附件,而是质量基础设施:

  • contract 让边界明确
  • testkit 让测试可复用
  • evals 让 agent 行为可比较

它们和业务代码一样,都应该被版本化、评审和纳入 CI。

最短记忆方式

没有共享质量资产,monorepo 里的测试只会看起来集中,实际依然是碎的。

创建于 2026/4/23 更新于 2026/5/27