如何用Ruby学习TDD?

我一直在使用ruby大约一个月,我真的很喜欢它。 但是,我使用甚至学习TDD都非常困难。 我的大脑不会那样运作……

我真的,真的想学习TDD,但说实话我有点困惑。 我在Google上找到的所有文章都主要针对Rails,这对我来说并不感兴趣,因为我想学习如何对任何ruby应用程序进行高效测试,从简单的单文件脚本到复杂的gem,而不是网络应用。 此外,还有很多框架和很少的入门教程。

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

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

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

它将向您展示测试的分层特性。 而不是想要一个必需的名称,不能包含数字。 你将首先测试设置和读取名称,测试需要名称,测试它不应该包含数字,而不是考虑它是否有更多约束并测试它们。

记得:

  • 在编写代码之前编写测试
  • 确保测试失败! 知道你的测试逻辑是正确的很重要
  • 在编写下一个测试之前,请确保所有测试都成功
  • 您可以随时清理代码,如果测试继续有效,则不会更改设计

试试RubyKoans 。

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

一次一个测试。 这是唯一的秘密,其余的只是练习,虽然你需要做很多练习;-)

你已经有了足够的开始:Ruby有test/unit库,这足以开始。

尝试使用Google搜索Ruby test/unitRuby TDD 。 我找到的几个有用的起点就在这里和这里 。

我开始练习一个全新的项目,最好是一个副本,你最初可以慢慢进步。 要非常严格 – 所有代码都应该在测试失败的情况下编写。 记住“红绿重构”口头禅的第三部分 – 如果没有它,你很快就会遇到麻烦(相信我,我一直在那里)。

一旦你觉得你已经开始熟悉这种技术(一个迹象可能是你注意到你实际上没有真正的代码测试 – 调试周期),那么开始寻找一些替代方案: rspec是主要的一个,但还有其他( riot , minitest是Ruby 1.9的默认值,如果你是1.8.x)

我仍然推荐Kent Beck的TDD示例 。 这是一个简单的阅读,并为您提供所有基础知识。

我个人发现Peepcode RSpec截屏非常有用,它们可以让您对测试内容有所了解,并且可以让您快速开始使用RSpec。 我花了一段时间才开始使用TDD,但这是值得的!

我同意肯特·贝克(Kent Beck)关于阅读“TDD by example”的答案以及关于有一个强迫自己去做的真实项目的答案。

您还可以找到返回基础:编写unit testing首先用作与Ruby相关的参考。