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

测试基座应该早于复杂功能扩展

对源生成器模板来说,先补测试基座再扩 AdditionalFiles、诊断和配置合并,通常比反过来便宜得多。

源生成器项目里,有一种很常见的拖延:

先把功能都做完,测试以后再补。

这在普通业务代码里已经不太稳,在生成器里会更危险。

为什么生成器特别容易积累“静默回归”

因为很多回归不是运行时报错,而是:

  • 生成内容悄悄变了
  • 诊断 ID 变了
  • 某个配置键不再生效
  • 某种嵌套或泛型场景突然不命中

这些问题如果没有测试,你通常只能靠 sample 手工看结果。

而 sample 最擅长的,从来不是覆盖边界。

复杂功能为什么更依赖测试基座

当你开始补下面这些能力时,测试就不再是“可选增强”:

  • AdditionalFiles
  • 多配置文件合并
  • 显式消息键
  • build_property.*
  • analyzer 与 generator 协同

因为这些能力都有一个共同点:

输入组合一多,靠肉眼验证几乎不可能稳定。

更稳的顺序是什么

比起“先做完功能再回头补测试”,更稳的顺序通常是:

  1. 先立最小测试基座
  2. 再补第一批复杂边界
  3. 每加一层配置或诊断,就补对应断言

这样你扩的是能力,不是在滚着扩风险。

enterprise 为什么必须带测试项目

如果模板已经走到 enterprise,说明它的目标不是演示,而是交付。

一旦目标是交付,测试就不只是保障代码质量,而是保障模板复制出去以后还能保持同样边界。

换句话说,测试基座保护的不是某一次实现,而是模板契约本身。

一句话结论

对源生成器模板来说,测试基座最合理的位置不是“最后补”,而是“复杂功能开始增加之前就先立住”。

教程导航

继续阅读

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

上一篇 分层配置不该等到第二个仓库才设计 模板第一次落地时如果不先想清楚默认值、仓库级覆盖和文件级覆盖的边界,第二次接入时通常就会开始出现配置债。 下一篇 sample 负责证明模板活着,tests 才负责证明它没撒谎 sample 和 tests 在源生成器模板里不是重复建设:前者证明链路活着,后者证明复杂边界没有被悄悄改坏。
查看系列目录 查看全部文章

标签

分类