对于测试驱动开发(TDD),始终有一些迷惑,比如说,它的测试需要考虑完备性吗,需要考虑覆盖率吗?等等此类。今天从Javaeye中看到一句话,终于明白了。
“什么是TDD?TDD就是把你的需求用测试给描述出来。”
也就是说,TDD中的测试和一般意义上的单元测试并不一样,尽管TDD中的测试有时也作为单元测试来使用,但它们是两回事。(这里的需求,指的不是客户需求,而是程序员的开发需求)。
使用TDD时,首先写的是测试,这时相应代码还没有实现,那么测试什么东西呢?所以说,写测试的过程,同时也是设计接口的过程。这和写单元测试的目的完全是不一样的。
TDD还有一个额外的好处。大多数人都是懒的,不要指望所有的程序员在写完功能代码后,再去编写相应的单元测试。我觉得这个接口的实现没有问题,所以就不用测试。这种想法也很常见。所以一开始就写下测试,可以杜绝后患。