测试驱动开发:从 LED 驱动实例看 TDD 实践
1. 增量式进展
在测试驱动开发(TDD)中,早期的代码版本可能会让新手感到困扰。我们最初可能只是编写一些简单的测试,返回硬编码的值,测试代码短小,且在不同活动间频繁切换。
1.1 先伪造再实现
在学习极限编程时,有个很实用的原则:Do The Simplest Thing That Could Possibly Work(DTSTTCPW)。当只编写了少量简单测试时,最简单的做法通常是伪造结果。例如,LED 驱动通过硬编码写入 LED 地址的值来伪造结果。随着测试增多,伪造就不再简单,此时使用真正的解决方案或部分解决方案会更简单。
在传统开发中,硬编码值可能是个严重问题,因为容易在实现中遗忘这些捷径。但在 TDD 中,这不是大问题,因为后续会回头处理。随着设计更多测试,代码的弱点会逐渐暴露。如果担心遗忘,可在测试列表中添加相关测试。
我最初看到 Kent 伪造返回结果时也很困扰,但尝试后发现很有效。按照 Kent 的建议,编写好所有必要的测试后,我有了重要的感悟:即使实现远未完善,但测试是正确的。
很多人问我何时停止伪造并编写真正的代码,我的经验法则是:当伪造比实现更麻烦时,就开始实现。
1.2 保持测试小巧、聚焦
在测试 LED 驱动时,有个关于关闭 LED 1 的第二个测试用例。原本可以在 TEST(LedDriver, TurnOnLedOne) 中添加代码来测试关闭 LED 1,但这样会使测试不够聚焦。该测试失败可能有两个原因: LedDriver_TurnOn() <
超级会员免费看
订阅专栏 解锁全文
27

被折叠的 条评论
为什么被折叠?



