TDD已经发展多年,然而却仍未能普遍成为日常开发的实践之一,很多人在尝试使用TDD时遭遇了困难,并对TDD心存疑惑。我并非TDD方面的权威或专家,但希望能将我的经验和感想记录下来,希望能对某些仍对TDD有所困惑的人有所帮助,同时也希望能够听到不同的声音,共同交流与讨论。
本教程不是工具的使用教程,也不是TDD入门知识普及教程,因此这里不会告诉你TDD是什么,TDD的工具如何使用。关于TDD的基本概念和工具的使用,已经有很多文档可以参考,请自行学习。
“编写单元测试更多是一种设计行为、文档行为而不是单纯的验证行为。 编写单元测试缩短了很多反馈周期;其中至少缩短了功能的验证周期。” - Robert C. Martin
对于TDD的验证功能(测试功能)大家都不陌生,也很好理解,可是对于TDD的文档功能却有很多人不了解。
项目中的文档可以分很多种,例如需求文档、设计文档、用户手册、维护手册等等。这些文档可能是打印出来的,也可能以电子形式存在,而其内容可能是文字、图表、图形甚至是视频。今天我们讨论的文档偏向于设计文档,其他文档并不涉及。
设计文档一般有两种用途,在程序开发出来之前,设计文档用于指导编码,而在编码之后,设计文档用于帮助理解代码。MSDN中的类库参考也是一种设计文档(同时也是帮助文档),它描述了类库的使用方式和它们之间的联系,更重要的是其中有很多的例子可以帮我们理解如何使用这些类库。那么这和TDD有什么关系呢?
我们先看一个例子:
public void twelve_inches_should_equal_to_one_foot() { Inch twelveInches = new Inch(12); Foot oneFoot = new Foot(1); Assert.AreEqual(twelveInches, oneFoot); } public void one_foot_plus_two_inches_should_equal_to_fourteen_inches() { Foot oneFoot = new Foot(1); Inch twoInches = new Inch(2); Inch fourteenInches = new Inch(14); Assert.AreEqual(oneFoot.Plus(twoInches), fourteenInches); } |