关于Ruby 1.9.x的测试框架是否有共识?

Tel*_*hus 11 ruby testing rspec minitest

一个快速介绍的两人组合.简介:我是从Perl来到Ruby的,我在测试框架选择中有点迷失.我知道可能没有单一的,全方位的最佳选择,但我甚至无法清楚地了解比赛场地.

那么,首先,MiniTest还是Test :: Unit?我刚刚意识到1.9.1默认为MiniTest.我没有注意到,因为所有较旧的Test :: Unit教程仍然可以正常工作.如果您require test/unit,您实际上将MiniTest作为Test :: Unit模拟器(!).我最初的想法是使用MiniTest的默认选择(一旦我知道它就在那里),但即使是最新的书也似乎没有兴趣教它.Ruby Best Practices说"两者之间存在显着差异",但他选择不处理它们.他还通过Test :: Unit(以及一些自定义附加组件)运行他的所有测试.新的Pickaxe 本身也很少涉及MiniTest ,在测试章节中他们也使用了MiniTest的Test :: Unit仿真版本.为了澄清我的第一个问题:MiniTest是一个糟糕的第一选择吗?我应该默认使用Test :: Unit模拟器吗?

其次,除了内置选项之外,还有用于行为驱动测试的Rspec,Cucumber和公司.社区是否倾向于这种风格和这个框架?我应该从Rspec开始吗?

我会对这三个人玩一点,但我很想知道在Ruby 1.9中围绕测试形成了什么样的共识(如果有的话).

(快速跟进,提醒自己和任何感兴趣的人.请参阅此链接,了解各种Rubies 1.8到1.9.1中Test :: Unit和MiniTest的不同调用的有用概述.)

Joh*_*n K 7

我一直在使用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 
Run Code Online (Sandbox Code Playgroud)

此外,无论测试框架如何,您还应该考虑像RCov这样的覆盖工具.它与rspec集成,并将告诉您代码缺少测试的位置.

  • 在Ruby 1.9中,内置的MiniTest/Spec使用相同的synax,并且具有运行速度更快的优势(当你进行了大量测试时) (2认同)

Mik*_*use 6

有共识吗?我不会说.使用TDD/BDD有很强的社区声音,但即使这样,它也不是普遍的.该框架可能不如首先应用该实践重要.

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

RSpec略有不同:"传统的"受xUnit影响的框架不太明显.值得花一些时间来看看你是否喜欢它.

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

当然,乐趣并不止于此:一旦你选择了一个测试框架,你就会想要一种某种类型的模拟引擎.或者更换数据夹具.

在所有情况下,我会说任何可以找到定期更新证据的框架,一个开放的,人口稠密的社区和一个你不讨厌的API都可以完成这项工作.你做出任何选择都不太可能会被击落.