测试驱动开发与测试驱动设计相同吗?

时间:2011-09-24 11:37:03

标签: tdd

我开始学习测试驱动开发。我读过很多关于TDD的文章。有些人将其称为测试驱动开发。其他人称之为测试驱动设计。它们是一样的吗?我得到的印象是相同的,但如果没有,主要区别是什么?

3 个答案:

答案 0 :(得分:11)

测试驱动开发是指描述如何编写代码的实践。

测试驱动设计提出了另一个要求:遵循这种做法将导致良好(整体)设计。

答案 1 :(得分:6)

有些TDD布道者称,“测试驱动开发”主要是一种设计技术,所以他们不久前将其改名为“测试驱动设计”。但是,这种观点被其他人视为非常持怀疑态度,例如阅读这篇前SO帖子

Does Test Driven Development take the focus from Design?

还有一篇有趣的德国博客文章Ralf Westphal讨论了这个话题:

http://ralfw.blogspot.com/2011/07/test-driven-unterstanding.html

Here's a Google Translation如果你不懂德语。)

答案 2 :(得分:4)

测试驱动开发是在编写生产代码之前开发测试。这背后的目标是产生所谓的“可执行要求”,而且只需编写足够的代码来满足要求。

如果你使用像Moq这样的Mocking框架,你将被迫使用依赖注入构建基于Inversion of Control原则的代码,这被认为是一种很好的做法,因为它可以减少代码的“脆弱性”并促进松散耦合。解决方案的细粒度方面。

所以回答你的问题TDDevelopment更多的是在代码中实现需求,使用你想要的任何工具。 TDDesign是单元测试发展的下一步,通过采用Moq等模拟框架,您可以强制进行良好的设计。使用TDDesign生成的代码保证符合IoC容器的要求,例如spring。

TDDev很好...... TDDesign更好。