一个有快速介绍的两部分。介绍:我从 Perl 转到 Ruby,在测试框架的选择中我有点迷失。我知道可能没有单一的、全能的 最好的 选择,但我什至无法清楚地了解比赛场地。

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

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

我将尝试一下这三个方面,但我很想知道围绕 Ruby 1.9 中的测试形成了什么样的共识(如果有的话)。

(快速跟进,作为对我自己和任何感兴趣的人的提醒。看 这个链接 有关各种 Rubies 1.8 到 1.9.1 中 Test::Unit 和 MiniTest 的不同调用的有用概述。)

有帮助吗?

解决方案

是否有共识?我说没有。有使用TDD / BDD但即便如此,它不是普遍的社会的强烈呼声。该框架是可能比在第一位置施加的做法不那么重要。

相信MINITEST是1.9替代测试::单元,其中仅存在作为围绕为了向后兼容的新的库的包装。我猜想,所采取的具体MINITEST路线会更具有前瞻性。

RSpec的是一个有些不同的看法:通过“传统的”的xUnit影响的框架较少明显输注。这是值得花一些时间,看看你是否喜欢它。

还有早该。虽然我不知道如何测试它是在1.9:它更多的包装/延伸测试::单位的,所以它可能会工作,虽然

当然的乐趣并不止于此:一旦你选择了一个测试框架,你会想要某种嘲讽引擎。或数据夹具更换。

在所有的情况下,我会说任何框架,你可以找到定期更新,一个开放的,填充社区和你不恨将做的工作的API的证据。这是不可能的,你要对于具有让你做任何选择,后来拍了下来。

其他提示

我一直使用Rspec的一年左右。我从测试::单位切换具体地说,因为我可以在什么正在被测试人类可读的方式打印。

它读取像散文。这是很大的加我。但是,与一切结果会有所不同。

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

此外reguardless测试框架,你也应该考虑一下像 RCov 覆盖的工具。它集成了RSpec的,并会告诉你,你的代码没有进行测试。

RSpec的是流行的Rails书籍如“Rails的道路”的共识。优点恕我直言,是读起来像英语测试,输出格式,上面写着喜欢英语,并即时匹配器。缺点是速度慢和库有时感觉“不可思议”,即太陌生的程序员谁更熟悉Ruby和单元测试。 RSpec的同时也提供黄瓜和小黄瓜,这是书写方式的用户故事,是有用的客户认可。

MINITEST被内置到红宝石1.9。优点恕我直言是速度快,很容易读/写其他语言的程序员,并且使用多少你会在你的真正的代码使用相同的代码风格测试。 MINITEST已经远远超过大多数人都知道,例如MINITEST规格有BDD匹配器类似于RSpec的,MINITEST素是一种嘲讽体系,MINITEST Benchmark是用于性能概要分析。

在我个人的经验,谁建立Rails应用的人趋向RSpec的,和谁打造的纯Ruby代码的人趋向于MINITEST单位,规格,模拟,基准等。

我个人更喜欢 rspec。我发现将测试重点放在行为上确实有助于我解决我想做的事情。

使用 rspec 去获取像 Factory Girl 或 Machinist 这样的东西来生成测试数据,不要使用固定装置。

据Mike所说,rspec项目相当活跃,每个版本的rails都会正常发布新版本,以帮助其跟上框架的发展。

RSpec的是好的,但我认为最近出现了很多议论和运动的背后 MINITEST 其自带用Ruby 1.9.x中它有很多的RSpec的细微的,但是是非常精简和简洁。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top