模板、工程化与落地 · 第 9 / 11 篇

sample 负责证明模板活着,tests 才负责证明它没撒谎

sample 和 tests 在源生成器模板里不是重复建设:前者证明链路活着,后者证明复杂边界没有被悄悄改坏。

模板里同时放 sample 和 tests,经常会被问一句:

这两套不是重复了吗?

其实一点都不重复。

sample 真正负责什么

sample 最重要的价值,是让你在最短路径上确认:

  • 引用方式是对的
  • 特性发现是活的
  • 生成成员能被真实业务代码调用

它更像一个活体演示。

只要 sample 跑通,你就知道这套模板至少没有死。

tests 真正负责什么

tests 负责的不是“看起来能跑”,而是:

  • 边界有没有守住
  • 诊断有没有漂移
  • 配置优先级有没有被改坏
  • analyzer 和 generator 的协作有没有退化

这类问题,sample 基本不适合承担。

因为 sample 的目标是让人快速理解,不是把所有反例都塞进去。

为什么这两者不能互相替代

只保留 sample,你会缺少系统化回归拦截。

只保留 tests,你又会失去最直接的接入演示和活体验证。

模板一旦要复制给别人,这两种能力都很关键:

  • sample 负责降低第一次接入门槛
  • tests 负责降低后续演进风险

少任何一个,模板都会偏科。

enterprise 模板为什么两者都保留

因为它既要被人看懂,也要被机器稳定验证。

前者靠 sample,后者靠 tests。

这不是冗余,而是模板从“示例项目”升级成“团队骨架”后必须具备的双面能力。

一句话结论

sample 的职责是证明模板活着,tests 的职责是证明模板在扩展和重构之后仍然诚实地守住原有边界。

教程导航

继续阅读

当前文章已经挂到教程顺序中,建议按相邻章节继续。

上一篇 测试基座应该早于复杂功能扩展 对源生成器模板来说,先补测试基座再扩 AdditionalFiles、诊断和配置合并,通常比反过来便宜得多。 下一篇 交付脚本应该是模板契约的一部分,而不是口头流程 模板如果要真正被团队复制和发布,改名、打包、恢复和消费验证这些动作就应该进入脚本层,而不是留在记忆和聊天记录里。
查看系列目录 查看全部文章

标签

分类