【问题标题】:Rspec vs. TestUnitRspec 与 TestUnit
【发布时间】:2011-06-17 06:53:58
【问题描述】:

我正在开始为我的 rails 3.0.8 应用程序创建测试套件的规划阶段。我正在尝试决定使用哪个测试框架/宝石。通常我更喜欢尽可能地遵守 Rails 约定。但是,这意味着使用 TestUnit。有许多竞争测试框架可供选择,它们是作为 TestUnit 的替代品而创建的。多年来,TestUnit 是否变得更好,或者它不是一个很好的竞争者?

我还听说了很多关于 rspec 的好消息。 rspec 和 TestUnit 在功能上是否接近,或者 rspec 是否会将 TestUnit 彻底淘汰?

无论我选择什么框架,我都希望它具有良好的支持基础(大量用户和文档)、易用性/简单性和持久的未来。

【问题讨论】:

标签: ruby-on-rails ruby ruby-on-rails-3 testing testunit


【解决方案1】:

Test::Unit 和 Rspec 都是非常好的解决方案。至于我,我更喜欢在我的 Rails 项目中使用 RSpec——因为它有许多自动解决方案,如自动测试、突出显示语法、rake spec 等快捷命令以及其他使使用测试更轻松的东西。但是在我的普通 ruby​​ 脚本中,我使用 Test::Unit - 当您不需要复杂的测试(集成和其他测试)时,它非常轻量且简单

【讨论】:

    【解决方案2】:

    答案是品味问题,在一个项目中同时使用这两种方法,然后找到自己喜欢的东西。 (我做 Test::Unit,RSpec 对我来说有很多糖分)。

    2014 年更新:由于 Ruby 2.x 内置了 MiniTest,我建议最终检查 MiniTest::Spec,这是简单的 BDD 扩展。您可以混合使用“describe”和“it”块来很好地构建测试上下文。如果您想要超过assert,它还提供“must_be..”匹配器。

    【讨论】:

      【解决方案3】:

      我更喜欢并使用这些 gem 进行测试

      • Rspec
      • Faker(用于为数据库创建随机且适当的数据)
      • 制作(用于简单创建实例)

      从 rspec 开始,看看这个演示文稿。它包含所有必要的示例:

      http://kerryb.github.com/iprug-rspec-presentation

      还阅读了有关 rspec 的这些文章:

      http://relishapp.com/rspec/rspec-rails

      【讨论】:

        【解决方案4】:

        This Ruby Inside article,特别是如果您点击链接并阅读 cmets,对 Test::Unit 和 RSpec 的相对优点进行了相当彻底的讨论。一个关键的区别似乎是:

        • 拥有非技术客户的人更有可能更喜欢 RSpec 和 Cucumber;
        • 其他人更有可能更喜欢更直接的系统,例如 Test::Unit。

        另请参阅this part of Michael Hartl's Rails Tutorial,了解 RSpec 和 Cucumber 的比较。

        【讨论】:

          【解决方案5】:

          如果您有一个大型网站,您可以将rspeccucumberwebrat gem 结合使用,这是一个很好的组合。一开始会很麻烦,但以后会有很大的好处。

          您可以观看以下 railscasts 剧集以了解有关这些宝石的更多信息:
          第155章 从黄瓜开始
          第156话
          157 RSpec 匹配器和宏
          159 更多关于黄瓜

          还有一些其他的gem,比如capybara,相对较新,很有前途,但老实说我没试过。

          【讨论】:

            【解决方案6】:

            如果您开始测试 Rails 应用程序,我建议您开始使用 TestUnit。您可以在 http://www.codeschool.com/courses/rails-testing-for-zombies 上找到关于最佳测试 Rails 应用程序和最佳实践的非常好的课程 如果您在测试方面更有经验,可以尝试 RSpec。

            【讨论】:

              猜你喜欢
              • 2012-08-27
              • 1970-01-01
              • 2013-09-24
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多