成功进行测试驱动开发,你需要三种技能集:知道如何编写优秀的测试、在编码前编写测试,以及良好的测试设计。 仅仅做到先编写测试,并不能保证测试是可维护、可读以及可靠的。你正在读的这本书讲的全都是进行优秀单元测试的技巧。 仅仅做到编写的测试可读、可维护,并不能保证你获得先编写测试的各种好处。市面上大部分讲TDD的书介绍的都是测试优先的技能,而不讲授优秀测试技能。我特别推荐Kent Beck的Test-Driven Development: by Example(Addison-Wesly Professional,2002)。 仅仅做到先编写测试,并且测试可读、可维护,并不能保证你得到一个设计完善的系统。设计能力才是使代码优美、可维护的关键。关于这方面的好书,我推荐Steve Freeman和Nat Pryce的Growing Object-Oriented Software, Guided by Tests(Addison-Wesly Professional,2009)以及Robert C. Martin的《程序员的职业素养》。 学习TDD的一个实用方法是分别学习以上三个方面的技能。也就是说,一次只关注一种技能,忽略其他的技能。我经常看到人们试图同时学习这三种技能,学习过程非常艰难,最后因为难度太大而放弃。所以我推荐一次只关注一种技能的学习方法。 通过采用这种比较循序渐进的方法来学习这个领域的知识,你一段时间只关注一个方面,不会总是担心在别的领域犯错。 至于按什么顺序学习,我没有什么具体的设想。我很希望了解你学习这些技能的经验和学习时的建议。你可以在http://osherove.com获取我的联系方式。