对单元测试最全面最准确的定义
2011-11-22
随着敏捷开发在项目中的大量应用,特别是测试驱动开发的流行,我越发的体会到单元测试与其中所扮演的重要角色。
问不同的程序员,他们对单元测试的定义应该会不一样,或者说他们给出的解释会很笼统,不全面。这其实是由于单元测试本身的特点所决定的,一个测试的优与劣,不是由单一的因素决定,而是同时受多个变量的约束。此时,一本系统的介绍单元测试的书就显得格外重要。
书中,作者细致的阐述了衡量一个好的单元测试应该满足的条件,其中包扩了单元测试的简明性,可维护性,高效性,及测试范围等多个方面。此外,作者还用了大量的篇幅去解释如何实现单元测试的隔离性。个人认为,这是实现优秀的单元测试的最重要的一个环节,因为此性质是单元测试和整合测试最重要的差别所在。在帮助实现单元测试隔离的过程中,另外两个重要的概念也在书中有所谈及,这便是Mock和Stub。对于这两者关系和区别的最经典的解释可以参照Martin Folwer的文章。
余下的章节中,作者介绍了测试的构架,测试在项目中的应用,以及和设计相关的部分。
虽然书中的例子用的都是c#,但对于有面向对象基础的读者,是不会产生阅读障碍的。
作为附加参考,我还推荐robert的clean code和michael的working effectively with legacy code,他们的书中关于单元测试的部分也各自有他们独到的见解。