如何将您的范例转变为测试驱动的开发

时间:2008-11-25 17:51:24

标签: tdd

我已经听说过几年的测试驱动开发了,直到最近我开始对.NET MVC更感兴趣时,我从未真正从实际层面过度关注它。我一直在玩MVC Storefront Sample,我意识到测试驱动方法有多酷和有用。但是,我一直在使用“最后测试”方法进行编程很长一段时间,而且当涉及到业务时,我总能用我最熟悉的方法来最好地估计我的努力。

我猜测学习如何使用测试驱动的方法不像学习另一种编程语言,而是更多地改变你的方法来构建框架,并规划构建应用程序的要求。我不认为我可以拿起一本书并为我的一个使用TDD的客户启动项目,我猜我的介绍需要更有条理。

对我来说,改变计划构建应用程序的思维方式的最佳方法是什么,这样我才能在最短的时间内通过测试驱动的开发变得有效?

6 个答案:

答案 0 :(得分:15)

你仍然可以测试最后一次。没关系。我们原谅你。

了解单元测试工具如何以您当前的语言运行。

开始为您现在正在处理的任何内容编写单元测试。

最终,你可以转向一点一点的代码。然后测试一点点代码。

纯测试驱动开发是理想的选择。实际上,大多数人都会测试一点点代码。更像是测试转向或测试引导,而不是测试驱动。

立即开始。测试你手边的任何东西。

答案 1 :(得分:3)

您需要练习

您可以从测试优先编程开始。像往常一样设计代码,也许不是深入细节,并首先开始实现它的测试:从没有依赖关系的类开始,看看它是如何测试的,写下你能想到的测试列表。开始编写最简单的测试。然后编写足够的代码使其通过。在您的列表上交叉测试并编写它,编写代码。

如果您对新测试有所了解或者问自己一个关于代码在特定条件下的行为方式的问题,请在列表中添加新测试。

我建议你阅读Test Driven Development;这是对TDD的一个很好的介绍,还包含很多参考资料(称为模式)。

关于估算,需要记住的一点是,尽管同时编写代码和测试的时间比编写代码要长一些,但最后还是使用代码可以运行

一旦你开始使用,还有一些建议:

  • 在修复代码中的任何问题之前添加新的失败测试。

  • 在没有失败测试的情况下,不要写任何代码行 - 这是最终目标。

答案 2 :(得分:3)

获取TDD的最佳方法是继续进行。到目前为止,这是唯一可以让同事“受到感染”的方法 - 至少现在你对前期的好处有了很好的认识。

从更实际的角度来看,我认为您已经突出了其中一个关键想法 - 它是规划构建应用程序要求的一个变化。无论您目前使用何种方法,如果您看到“需求”这样的词,您可以在心理上思考“测试用例”,并至少具有首先编写测试用例的 intent 。但就像其他答案所表明的那样,TDD不是一个全有或全无的决定。无论何时编写,在编写之前或之后进行的任何测试都是有帮助的。同样地,不要认为你可以进入一个你预先编写所有测试的状态 - 这是一个循环。

我最喜欢的是this item in the JUnit FAQ末尾的伪代码。测试用例框架是一个无限循环。跳进去,你写的任何测试都会有所帮助,你也不会后悔。

答案 3 :(得分:2)

我不明白你为什么不能开始使用TDD。您不需要使用练习创建所有代码 - 只需每天使用一个课程,或者每天一小时使用它作为初学者。当您感觉更舒服时,请将练习的应用扩展到更多代码。

还要记住,TDD更像是一种设计策略,而不是一种测试策略。对测试告诉您生产代码的内容持开放态度。如果有疑问的话,总是无情地重构 - 特别是在开始时,错误地重构太多。

如果你能找到一些志同道合的人,可以考虑进行编码dojo;这是一种学习新编程技巧的好方法:http://codingdojo.org/

答案 4 :(得分:0)

除了S.Lott所说的,还要看看MVC店面的结构。

他们如何使用来自数据库的数据处理测试? 他们如何处理Controller正常运行的测试?当类有其他依赖项时,它们如何处理?

一旦你超越了(???)Unit

的基础知识,看看TDD如何要求你构建一个程序真的会有所帮助

答案 5 :(得分:0)

即使您首先编写代码,在编写代码时问自己,“这是可测试的吗?”如果不是,那么您可能想要重新考虑您正在编写的特定代码片段的设计。如果是,那就继续完成它,然后再写一些测试。我现在正处于代码 - 一点点,一点点测试一点心态。