Kent Beck:可组合测试的精髓
Kent Beck: Composable Tests

Kent Beck 在文中深入探讨了测试的隔离性(Isolation)与组合性(Composition)的区别。他指出,盲目复制粘贴测试代码会导致冗余和可读性下降,而通过组合测试,我们能在保持测试覆盖率和预测性的同时,大幅减少测试数量。例如,将计算逻辑与报告逻辑分离测试,再用少量组合测试验证其连接,比暴力穷举更高效。这种策略让测试更快、更易读、更具体,且对结构变化更不敏感。许多开发者因恐惧而拒绝减少断言,但 Kent 认为这是基于恐惧而非原则的反应。组合测试是从整体视角优化测试套件,而非削弱单个测试的价值。
这种反应源于恐惧,而非原则。
HN 评论区
62- pfdietz
我有一套包含数千个测试的测试套件。其中一种运行方式是:先筛选出所有通过的测试,然后以随机顺序反复运行它们。
这种方法发现了一些涉及非预期持久状态的新的 bug。
- cadamsdotcom
为什么不使用参数化测试,或者用运行共享设置代码的 fixtures 来组合你的 setup 呢?
运行一个测试,再运行第二次,然后断言别的东西……这听起来就很奇怪。
- solarengineer
有人曾留言问 Kent Beck 是否听说过全局变量和静态变量。那条评论似乎已经被删除了。
Kent Beck 是 JUnit 测试框架的联合创建者 [1],他肯定听说过静态变量和全局变量。
- grim_io
我受够了听聪明人给我的笨代码提修复建议。
要么是我自己不够聪明或不够自律,要么是我的同事不够,大多数情况下是两者兼有。
- nhgiang
啊,Kent Beck,看来你写 trivial 例子的风格一直没变。