我发现编写代码的某些形式比其他形式更适合TDD,特别是红绿重构测试。
在红绿重构中,我首先准备好所有单元测试,并使其全部失败(红色)。然后实现代码,直到所有测试通过(绿色)。
例如,如果我需要实现一个接口10-20次,我只需在类中实现该接口,并将所有方法设置为抛出
但过程并不总是那么简单。例如,我正在编写一个基本的Excel解析器。我不熟悉Excel Interop API。我发现直接写代码更容易。然后通过试错法发现我的类设计。
在这种情况下,我正在编写一些垃圾软件,只是为了找出我的设计需要什么。(也许我需要在这里传递一个文件名,也许到这个构造函数...)。
最终,我希望保持TDD。我确信它可以使我的代码尽可能简洁和精益。
在红绿重构中,我首先准备好所有单元测试,并使其全部失败(红色)。然后实现代码,直到所有测试通过(绿色)。
例如,如果我需要实现一个接口10-20次,我只需在类中实现该接口,并将所有方法设置为抛出
NotImplementedException
。然后,为每个公共方法创建一个测试。从那里开始,我只需编写代码以解决测试问题。但过程并不总是那么简单。例如,我正在编写一个基本的Excel解析器。我不熟悉Excel Interop API。我发现直接写代码更容易。然后通过试错法发现我的类设计。
在这种情况下,我正在编写一些垃圾软件,只是为了找出我的设计需要什么。(也许我需要在这里传递一个文件名,也许到这个构造函数...)。
最终,我希望保持TDD。我确信它可以使我的代码尽可能简洁和精益。
TDD是否适用于原型开发?换句话说,当我不确定我的设计方向时,有没有一种方法可以让TDD对我起作用?