理念
如果我们能够在设计程序前先设计测试方案,情况怎么样?
如果我们能够做到:除非缺乏某个功能将导致测试失败;否则就拒绝在程序中实现该功能,情况会怎么样?
如果我们能够做到:除非由于缺少某行代码将导致测试失败,否则就拒绝在程序中增加哪怕一行代码,情况会怎样?
如果首先编写失败的测试表明需要一项功能,然后再逐渐地增加那项功能使测试通过,情况又会怎样?
这对于我们正在编写的软件的设计有什么影响?如果存在这样一组包罗万象的测试,我们能够从中得到什么好处?
方法
● 创建一个清单,列出我们所知道的需要让其运行通过的测试
● 通过一小段代码说明我们希望看到怎样的一种操作
● 暂时忽略JUnit的一些细节问题
● 通过建立存根(stub)来让测试程序通过编译
● 通过一些另类的做法来让测试运行通过
● 逐渐使工作代码一般化,用变量代替常量
● 将新的工作逐步加入计划清单,而不是一次全部提出
尽快使测试程序可运行的策略
1、伪实现
返回一个常量并逐渐用变量代替常量直至伪实现代码成为真正实现的代码。
2、显明实现
将真正实现的代码直接敲入。
3、三角法
测试的步骤/阶段
1、写一个测试程序
2、让测试程序编译通过