一个生动的例子说明了测试驱动开发的必要性:
两个工匠砌墙,一个人先画了条线,后面就按照这条线砌墙,最后得到的强肯定是直的。一个人砌墙后再看是否是直的。
明显第一个工匠是高效的,如果把符合这条线作为通过测试,那么这个工匠的所有工作都是以通过这条线展开的,所以
最后的结果也必定是通过测试的。
测试驱动开发的由来:
源于三个思考:
1、如果我们能够在编写代码之前先进行测试方案的设计会怎么样?
2、如果除非是失去了这个功能程序测试就会失效,否则就不在程序中实现这个功能,会怎么样?
3、换一个角度,如果我们增加一个功能就会使测试通过,那么我们就在程序中增加这个功能,会怎么样?
测试驱动开发也有一些自动化的测试框架的生成工具
比如:xuint;cppunit