【问题标题】:How to learn TDD with Ruby?如何用 Ruby 学习 TDD?
【发布时间】:2011-02-07 08:56:43
【问题描述】:

我已经专门使用 ruby​​ 大约一个月了,我真的很喜欢它。但是,我在使用甚至学习 TDD 时遇到了难以置信的困难。我的大脑就是不能那样运作......

我真的非常想学习 TDD,但老实说我有点困惑。我在谷歌上搜索时发现的所有文章大多是针对 Rails 的,这对我来说并不感兴趣,因为我想学习如何对任何 ruby​​ 应用程序进行有效测试,从简单的单文件脚本到复杂的 gem,而不是网络应用程序。此外,有很多框架和很少的入门教程。

谁能给我任何关于如何学习 TDD 的建议,以便我至少可以开始认为自己是一个有抱负的 ruby​​ist?

【问题讨论】:

  • 虽然大部分答案都提到了场外资源,但问题并不要求他们,也没有一个好的答案需要场外资源。因此,我认为这不应该作为对场外资源的请求而关闭。

标签: ruby testing tdd


【解决方案1】:

试试RubyKoans

【讨论】:

  • RubyKoans 很棒,因为他们根据测试教授 Ruby。绝对是通过示例学习 TDD 的好方法。也推荐:Ruby Best Practices
【解决方案2】:

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

它会让你想到写测试:我想写这段代码,我如何为它写一个测试以便我可以写它。

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

记住:

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

【讨论】:

    【解决方案3】:

    了解 TDD(和 BDD)很棘手,但 RSpec Book - BDD 这本书对我帮助很大。行为驱动开发与 TDD 并不完全相同,但两者很接近,您必须以类似的方式思考。

    【讨论】:

      【解决方案4】:

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

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

      尝试在 Google 上搜索 Ruby test/unitRuby TDD。我发现的几个有用的起点是herehere

      我会从一个全新的项目开始练习,最好是一个可以让你一开始进展较慢的副业。要非常严格——所有代码都应该是测试失败的结果。记住“red-green-refactor”口头禅的第三部分——如果没有它,你很快就会遇到麻烦(相信我,我去过那里)。

      一旦您觉得您开始对这项技术感到满意(一个迹象可能是您注意到您实际上不再有代码-测试-调试周期),然后开始寻找一些替代方案:@987654323 @ 是主要的,但还有其他的(riotminitest 是 Ruby 1.9 的默认值,如果您使用的是 1.8.x)

      【讨论】:

        【解决方案5】:

        我仍然推荐 Kent Beck 的 TDD by Example。它易于阅读,为您提供所有基础知识。

        【讨论】:

          【解决方案6】:

          我个人认为 Peepcode RSpec 截屏视频非常有帮助,它们可以让您很好地了解要测试的内容,并且可以帮助您快速开始使用 RSpec。我花了一段时间才开始使用 TDD,但这是值得的!

          【讨论】:

            【解决方案7】:

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

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

            【讨论】:

              猜你喜欢
              • 2011-05-10
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2016-11-21
              • 2010-11-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多