上QQ阅读APP看书,第一时间看更新
测试驱动开发
本主题将在第4章更详细地讨论,这里简单概括一下。
所有生产代码都是为了让一个失败的单元测试通过而写的。先写一个失败的单元测试,因为此时还没有它要测试的功能,然后写代码使其通过。
测试用例和代码以很快的速度迭代,大约一分钟左右。测试用例和代码共同演进,测试用例每次都小幅度地改进代码(第6章展示了一个例子)。
最终,一套非常完整的测试用例就和代码共同发展起来。程序员可通过这些测试检验程序的正确性。结对编程时,如对代码进行微小改动,他们可运行测试,确保一切如常。这非常有利于重构(本章稍后讨论)。
如果写代码的目的是希望通过测试,代码天生就具备了“可测试”性。另外,你会更有动力“解耦”每个模块,使其具备独立测试的能力。这样写出来的代码具有非常高的独立性,对其他代码的依赖更低。如第II部分所述,面向对象设计(OOD)是实现这种“解耦”的关键助力。