代码之家  ›  专栏  ›  技术社区  ›  Telemachus MrJames

对于Ruby 1.9.x的测试框架有共识吗?[闭门]

  •  11
  • Telemachus MrJames  · 技术社区  · 15 年前

    两人一组,简短介绍。简介:我是从Perl开始学习Ruby的,我对测试框架的选择有些迷茫。我知道可能没有单一的、全面的 最好的 选择,但我甚至不能清楚地了解竞争环境。

    那么,首先,是小型测试还是测试::单元?我刚刚意识到1.9.1现在默认为MiniTest。我没有注意到,因为所有旧的Test::Unit教程仍然可以正常工作。如果你 require test/unit 实际上,您可以将MiniTest作为Test::Unit仿真器(!)。我最初的想法是选择默认的MiniTest(一旦我知道它在那里),但即使是最近的书似乎也对它不感兴趣。 Ruby最佳实践 他说,这两者之间“存在重大差异”,但他选择不处理它们。他还通过Test::Unit(加上一些自定义附加组件)运行所有测试。新的鹤嘴锄也几乎没有微型测试功能 本质上

    第二,除了内置选项外,还有Rspec、Cucumber&行为驱动测试公司。社区是否强烈倾向于这种风格和这种框架?我应该从Rspec开始吗?

    我将对这三个方面都做一点探讨,但我很想知道在Ruby1.9测试中形成了什么样的共识(如果有的话)。

    (快速跟进,提醒我自己和任何感兴趣的人。请参阅 this link 有关各种Rubies 1.8至1.9.1中对Test::Unit和MiniTest的不同调用的有用概述。)

    5 回复  |  直到 15 年前
        1
  •  7
  •   John K    15 年前

    我已经使用Rspec一年左右了。我从Test::Unit切换过来,特别是因为我可以以可读的方式打印正在测试的内容。

    它读起来像散文。这对我来说是个很大的好处。但正如所有事情一样,结果会有所不同。

    describe Model do
      it "should do what I want" do
        this.should == that
        it.should be_nil
        that.should_not be_true
      end
    end 
    

    同样,对于测试框架,您也应该考虑一个覆盖工具,如 RCov

        2
  •  6
  •   Mike Woodhouse    15 年前

    有共识吗?我想不是。使用TDD/BDD的社区呼声很高,但即便如此,它也不是通用的。该框架可能没有首先应用实践那么重要。

    我相信minitest是Test::Unit的1.9替代品,它仅作为新库的包装器存在,以实现向后兼容性。我想,采用小型测试特定路线会更具前瞻性。

    RSpec有点不同:受“传统”xUnit影响的框架的影响不太明显。花点时间看看你是否喜欢它是值得的。

    还有 Shoulda . 虽然我不知道它在1.9上是如何测试的:它更像是Test::Unit的包装器/扩展,所以它可能会工作。

    当然,乐趣并不止于此:一旦你选择了一个测试框架,你就会想要某种模拟引擎。或者更换数据固定装置。

        3
  •  4
  •   Kyle Heironimus    13 年前

    RSpec是《Rails之路》等流行Rails书籍的共识。优点是读起来像英语的测试,读起来像英语的输出格式,以及即时匹配。缺点是速度慢,库有时感觉“神奇”,即对更熟悉Ruby和单元测试的程序员来说太陌生了。RSpec还提供Cucumber和Gherkin,这是编写用户故事的方法,有助于客户接受。

    MiniTest内置于Ruby 1.9中。优点是速度快,对于其他语言的程序员来说读/写都很容易,而且测试使用的代码风格与您在实际代码中使用的代码风格基本相同。MiniTest拥有比大多数人知道的多得多的功能,例如MiniTest规范有类似于RSpec的BDD匹配器,MiniTest Mock是一个模拟系统,MiniTest基准是用于性能评测的。

    根据我个人的经验,构建Rails应用程序的人倾向于RSpec,而构建纯Ruby代码的人倾向于小型测试单元、规范、模拟、基准测试等等。

        4
  •  3
  •   nitecoder    15 年前

    我个人喜欢rspec。我发现,把测试的重点放在行为上确实有助于我绕过我想做的事情。

    使用rspec,找一些像工厂女孩或机械师之类的东西来生成测试数据,不要使用夹具。

    关于Mike所说的,rspec项目相当活跃,每个版本的rails都会发布新版本,以帮助它跟上框架的开发。

        5
  •  1
  •   Nate Bird    13 年前

    RSpec很好,但我认为最近有很多的讨论和运动 Minitest 它与Ruby 1.9.x一起提供。它有很多RSpec的优点,但更加精简和简洁。