练习执行TDD和Mocking等良好实践

时间:2009-07-09 18:27:47

标签: tdd mocking

我正在寻找提供实际课程计划或路径资源来鼓励和强化编程实践,例如 TDD 嘲笑即可。有很多资源可以显示示例,但我正在寻找一些实际上提供进展的内容,允许学习概念而不是强制模拟

我的主要目标是加快某人理解TDD背后的概念并实际有效实施它们的过程。有这样的免费资源吗?

6 个答案:

答案 0 :(得分:12)

鼓励这是一件困难的事情,因为它可以(非常公平地)被视为一场大变革;与其说是一个目标的进展,而是一个完全不同的方法。

建议的简短名单是:

  • 你需要成为领导者,你需要在说服他人之前变得精通,你需要能够向他人展示道路并解决他们的不确定因素。

  • 首先要熟练自己编写单元测试

    • 练习为现有方法编写测试。您可能会在桌面上试图测试大量代码 - 但这不是因为测试很难或者您无法理解测试;它更有可能是因为你现有的代码和编码风格不是很容易测试。

    • 如果您很难入门,那么找出最简单的方法,并将它们作为起点。

  • 然后专注于提高您生成的代码的可测试性

    • 最大的一个提示:让事情更小,更重要。这是一个巨大的变化 - 这是让自己做的最困难的部分,甚至更难说服其他人。

在读鲍勃·马丁的“清洁代码”一书时,我个人有了“清晰的时刻”;一个早期的章节讨论了一个干净的方法会是什么样子,作为一个例子,他采用了一个大约40行的方法,在视觉上类似于我生成的东西,并将其重构为一个几乎没有更大的行计数但是没有任何东西的类。但是一口大小的方法,每个可能是3-7行。

看看这些itty-bitty方法,它突然点击了单元测试的基石“每个测试只测试一件事”,当你的方法只做一件事情时最容易实现(并且在没有30个内部机制的情况下做一件事)播放)。

好处是你可以立即开始应用你的发现;练习编写小方法和小类并沿途进行测试。你可能开始很慢,并且很快就遇到了一些障碍,但前几个月将帮助你指出正确的方向。

答案 1 :(得分:5)

您可以尝试参加(如果您附近没有人,可以主持一个!)a coding dojo

我参加了一个这样的练习,学习TDD很有趣。

答案 2 :(得分:3)

书籍总是一个很好的资源 - 即使不是免费的 - 他们可能值得你花时间寻找好的免费资源 - 这些书费用的钱。

肯特贝克

"Test driven development by example"

James W. Newkirk和Alexei A. Vorontsov的

"Test Driven Development in Microsoft .NET"

请随时添加到此列表中

答案 3 :(得分:2)

我完成的一件事让我更感谢TDD NHibernate and the Unit of Work Pattern。虽然它特定于NHibernate和.NET,但我喜欢它的排列方式。使用TDD,您可以开发一些实际有用的东西(UnitofWork),而不是一些简单的“这就是模拟看起来像”的例子。

我如何最好地学习一个概念,就是把它用于实际需要。我建议你看一下文章的结构,看看它是否符合你的要求。

答案 4 :(得分:2)

Geeks非常善于衡量指标,无论它们是否对他们有益!

您可以利用此优势。设置CI服务器并在代码覆盖率降至50%以下时使构建失败。让他们知道阈值每月会上升10%,直到90.你可能会使用一些提交钩子阻止他们开始检查代码,但我自己从未尝试过。

让他们知道团队的报道将在任何绩效评估等中生效。通过强调团队的覆盖范围,你应该得到同伴的压力,帮助你确保良好的报道

这只会确保他们正在测试他们的代码,而不是他们测试代码的程度,以及他们是否首先编写测试。然而,它强烈鼓励(或强迫)他们将测试纳入他们的日常开发过程。

通常,一旦人们在他们的过程中有某些东西,他们就会想要尽可能轻松/高效地做某事。 TDD是编写具有高覆盖率的代码的最简单方法,因为如果不覆盖代码,就不会编写代码行。

答案 5 :(得分:1)

找到有经验的人并与他们交谈。如果没有本地开发人员组,则启动一个。

您还应该尝试将事情推得太远,然后了解何时退出。例如,当有人问“如果我们编程没有吸气剂怎么办”时,整个模拟事情开始了。

最后,学会“听取测试”。当测试看起来很可怕时,请考虑是否是错误的代码,而不是您的测试技术。