42

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

我还听说过很多关于 rspec 的好消息。rspec 和 TestUnit 在功能上是否接近,或者 rspec 是否将 TestUnit 吹得水泄不通?

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

4

6 回答 6

37

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

于 2011-06-17T08:46:21.397 回答
14

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

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

于 2011-06-17T07:11:24.120 回答
8

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

  • 规格
  • Faker(用于为数据库创建随机和适当的数据)
  • 制造(用于简单创建实例)

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

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

另请阅读有关 rspec 的这些文章:

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

于 2011-06-17T13:08:12.217 回答
6

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

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

另请参阅Michael Hartl 的 Rails 教程的这一部分,以比较 RSpec 和 Cucumber。

于 2012-06-06T03:33:03.527 回答
4

如果您有一个大型网站,您可以使用rspecwithcucumber和gems,这是一个很好的组合。webrat一开始会很麻烦,但后来它会带来巨大的好处。

您可以观看以下 railscasts 剧集以了解有关这些宝石的更多信息:
155 从 Cucumber 开始
156 Webrat
157 RSpec Matchers & Macros
159 更多关于 Cucumber

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

于 2011-06-17T09:14:25.653 回答
2

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

于 2012-04-16T08:36:29.117 回答