学习TDD的最佳资源是什么?[关闭]


27

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

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

学习,欣赏和使用TDD?


1
您可能对我的TDD学习资源页面感兴趣。
xpmatteo 2011年

9
我喜欢这个问题。如果您不应该在这里问这个问题,那么您在哪里可以提出有关编程书籍建议的问题?
guettli 2014年

Answers:


18

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

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

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

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

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

对于Java,jUnit版本4确实很棒。


8

我认为,TDD不仅仅是编写测试,还在于使代码可测试。

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

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

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

更新:

如何编写干净,可测试的代码

MISKO Hevery演讲(通过GoogleTechTalks)在谷歌在纽约市,并通过谷歌的赞助工程生产力


继续并添加Google演示文稿链接。我认为Eric的代表尚未允许发表评论。
ocodo 2011年

+1 @Slomojo:是的,所以,投票表决这个问题……如果我没记错的话,将他推到15代表以上。我会环顾四周的视频。
错误

1
@blunders ...我让他到11岁!
ocodo 2011年

+1 @Slomojo:要进行投票,请在我的答案中找到该链接并将其添加到Google Tech Talk中。干杯!
失误

8

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


我认为这是我最喜欢的书,也是影响我工作方式最多的一本书,不仅与TDD有关,而且与软件开发有关。我还必须承认我没有读过很多TDD书,所以也许不太信任我。
antonio.fornie

4

我读了两本书:

测试驱动开发:以Kent Beck和

Paul Hamil的单元测试框架

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

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


4

尽管不主要涉及TDD(尽管它确实涉及TDD以及可测试性设计),我还是推荐一本书,因为它教您如何编写良好的测试。

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.