it-swarm.cn

学习TDD的最佳资源是什么?

我想学习(和掌握)TDD。什么是最好的:

  • 图书
  • 网站
  • 影片
  • 练习清单
  • 个人智慧的话

学习,欣赏和使用TDD?

27
Eric

我个人发现,阅读一两篇强调“您在代码之前编写测试”的文章足以使我入门。

学习这项技术中最重要的部分是编写很多基于测试的代码,因为您需要更改一些您认为编写代码的最基本的方式。像:

  • 在代码之前编写测试,可以让您先思考如何调用代码并将结果返回。这意味着您将根据使用方式先设计APIfirst。这通常会带来更好的API。
  • 您的编码风格将发生变化,因为您将需要考虑更多的模块化,以便能够测试部分代码而不是整个代码。
  • 由于测试通过,您还将达到可以放心地拔出大块并插入新块的方式,从而达到放心的地步。我最近使用日期解析库进行了此操作,因为原始库过于宽大。

最好的起点是使用实用程序例程。下次您需要一个时,只需先设计测试,然后编写涵盖所有正式用例的大量测试(包括传递空值等会发生的情况),并且在实现所有用例后,您就可以使用直接在您的代码中,并确信它可以按预期工作。

根据我的经验,好的测试还可以作为文档来做额外的工作,因为您有很多非常简洁的代码,它们准确地说明了代码在各种情况下的行为,可以很容易地证明这是正确的(绿色条)。通过仔细的评论,您不会比这更好。

对于Java jUnit版本4确实不错。

18
user1249

除了已经提到的一些书之外,我还可以推荐 由Tests指导的“增长面向对象的软件” 。我还没有读完它,但它值得一读,包括整个,逼真的TDD项目的故事,而不仅仅是简化的代码示例。

8
Péter Török

在我看来,TDD比编写测试更能使代码可测试。

当然,您可以在编码之前编写测试,但是编写测试的全部原因是您可以编写代码-这不会阻止您编写难以测试的代码。

看一下这个可以更好地理解我的意思:我的统一错误理论

如果您对这个概念感兴趣,并且想了解更多,请发表评论-我会为您指出Google录制的有关该主题的演示文稿的方向。

UPDATE:

如何编写简洁,可测试的代码

MiškoHeveryNYC的Google 上展示(由 GoogleTechTalks ),并由Google 赞助工程生产力

8
blunders

我读了两本书:

测试驱动开发:通过示例 由Kent Beck和

单元测试框架 Paul Hamil

Beck的书广受好评,但是直到阅读“单元测试框架”,我才开始进行单元测试。我做了一些TDD,但是我也会在必须维护的较旧代码中添加测试。

编辑:此外,一旦您掌握了它,我建议立即在当前项目中使用它。对我来说,这是真正的学习发生的时间,我认为“单元测试框架”这本书是一本更好的reference书。 (我在C#中使用nunit)。

4
vjones

尽管不是主要关于TDD(尽管确实涉及TDD,并且针对可测试性进行设计),但是 单元测试的技巧 我会推荐=,因为它会教您如何编写良好的测试。

更具体地说,它讲授如何创建可信赖,可维护和可读的测试。我认为这是本书中最重要的部分,可能不包括有关单元测试和隔离框架的基础知识。显然,如果单元测试成为痛点或增加开发人员的工作摩擦,那么从中获得的任何成功或收益将受到限制。如果您投入时间和精力来创建测试,则他应该能够从该投资中获得最大的回报。

4
Matt