2011-02-07 111 views
23

我一直使用红宝石约一个月,我真的很喜欢它。但是,我正在使用TDD或者甚至是学习TDD,这是非常困难的。我的大脑只是没有这样的功能...如何用Ruby学习TDD?

我真的很想学TDD,但说实话我有点困惑。我在Googling时发现的所有文章大多都是针对Rails的,这对我并不感兴趣,因为我想学习如何对任何Ruby应用程序进行高效测试,从简单的单文件脚本到复杂的gem,而不是Web应用程序。另外,有太多的框架和很少的教程可以开始。

有没有人可以给我任何关于如何学习TDD的建议,这样我至少可以开始认为自己是一个有抱负的rubyist?

+0

虽然大多数答案都指的是非现场资源,但问题并不是要求他们,也没有一个好的答案来解决这个问题需要非现场资源。因此,我认为这不应该作为对异地资源的请求而关闭。 – 2016-08-20 14:04:57

回答

11

学习TDD的最好方法就是做到这一点。我建议你使用TDD建立一个新项目。这意味着不会编写任何非测试代码,除非您有失败的测试

它会让你考虑编写测试:我想写这个代码,我该如何编写一个测试,以便我可以编写它。

它会告诉你测试的分层性质。而不是想要一个所需的名称,不能包含数字。你会首先测试设置和读取名称,测试需要名称,测试它不应该包含数字,比想象它有更多的约束和测试。

记住:

  • 编写一个测试你写的代码
  • 确保测试失败之前!重要的是要知道你正在测试的逻辑是正确的
  • 写入下一个测试,确保所有测试成功之前,是非常重要的
  • 您可以随时清理你的代码,如果测试继续工作,你没有更改设计
14

尝试RubyKoans

+1

RubyKoans非常棒,因为它们根据测试教授Ruby。通过示例学习TDD绝对是一种好方法。还推荐:[Ruby Best Practices](http://www.amazon.com/Ruby-Best-Practices-Gregory-Brown/dp/0596523009/ref=sr_1_1?s=books&ie=UTF8&qid=1297070444&sr=1-1) – Mobbit 2011-02-07 09:22:12

5

让你的头绕TDD(和BDD)很棘手,但书RSpec Book - BDD帮助了我很多。行为驱动的开发与TDD不完全相同,但它很接近,你必须以类似的方式思考。

3

一次测试一次。这是唯一的秘密,剩下的只是练习,虽然你需要做的做法;-)

很多你已经有足够的上手:红宝石有test/unit库,这是相当足够从...开始。

尝试使用谷歌搜索Ruby test/unitRuby TDD。我找到几个有用的出发点是herehere

我会开始练习一个全新的项目,最好是边线,最初可以慢一点。严格要求 - 所有代码都应该作为失败测试的结果编写。记住“红 - 绿 - 重构”口头禅的第三部分 - 如果没有它,你很快就会陷入困境(相信我,我一直在那里)。

一旦你觉得你已经开始习惯这种技术(一个标志可能是你注意到你没有真正的代码测试 - 调试周期),然后开始寻找一些替代品:rspec是主要的,但也有其他人(riot,minitest是Ruby 1.9默认,如果你在1.8.x)

1

我个人发现Peepcode RSpec屏幕视频非常有帮助,他们给你一个很好的想法以测试加上他们让你快速开始与RSpec。我花了一段时间才开始使用TDD,但它是值得的!

3

我仍然推荐Kent Beck的TDD by Example。这是一个简单的阅读,并给你所有的基本知识。

1

我同意Kent Beck提供的关于阅读“TDD by Example”的解答,以及关于有一个真实的项目,你强迫自己去做。

您可能还会发现Back to Basics: Writing Unit Tests First作为Ruby相关参考很有用。