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的不同调用的有用概述.)
我一直在使用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集成,并将告诉您代码缺少测试的位置.
有共识吗?我不会说.使用TDD/BDD有很强的社区声音,但即使这样,它也不是普遍的.该框架可能不如首先应用该实践重要.
我相信minitest是Test :: Unit的1.9替代品,它仅作为新库的包装器存在以实现向后兼容性.我猜想采用最小的特定路线会更具前瞻性.
RSpec略有不同:"传统的"受xUnit影响的框架不太明显.值得花一些时间来看看你是否喜欢它.
还有那个.虽然我不知道它在1.9上是如何测试的:它更像是Test :: Unit的包装/扩展,所以它可能会起作用.
当然,乐趣并不止于此:一旦你选择了一个测试框架,你就会想要一种某种类型的模拟引擎.或者更换数据夹具.
在所有情况下,我会说任何可以找到定期更新证据的框架,一个开放的,人口稠密的社区和一个你不讨厌的API都可以完成这项工作.你做出任何选择都不太可能会被击落.
| 归档时间: |
|
| 查看次数: |
2039 次 |
| 最近记录: |