17

我正在以古老的方式学习 Rails。通过阅读使用 Rails 进行敏捷 Web 开发(第 3 版)作为起点。我目前在教授测试的章节中。我也知道其他 BDD 测试框架,例如 RSPec。所以我想知道 RSpec、Cucumber、Should 等框架是否取代了了解/使用 Test::Unit 的需求?它们本身是否相关并用于不同目的?

更新:由于我是测试新手,因此我也很想获得有关哪些资源对我熟悉不同框架有用的反馈。

谢谢!

4

5 回答 5

16

世界变了!检查并支持@prusswan

我认为 Test::Unit 仍然是相关的,尽管围绕 BDD 和其他测试工具有很多炒作。

话虽这么说,如果您愿意,您可以绕过学习 Test::Unit 并立即从 RSpec 和 Shoulda 之类的东西开始,但是关于通过敏捷 Web 开发手册中的示例来查看的内容有一些话要说BDD 的想法来自哪里。

我发现自己仍然在某些项目中使用 Test::Unit,因为它是 Rails 附带的,并且仍然是一个非常棒的测试框架。

长话短说,我不认为它已经过时,但它不再是最前沿的了。BDD 是一种测试范式转变,尤其是当您开始使用 Cucumber 和 Webrat 时,但一旦您开始使用它就非常棒。Shoulda 是最容易过渡到的,所以我会从 Test::Unit 开始,然后转到 Shoulda,然后尝试 RSpec 和 Cucumber。

您正在测试或至少对测试感兴趣!这是最好的部分。最后,只要你对它感到满意,你使用什么并不重要。

祝你好运!

于 2009-04-04T15:03:19.630 回答
6

只是以为我会发布 2012 年的更新:

在关于 RoR的三本 主要当前(可与 Rails 3.2 一起使用,只需进行一些小的修改)介绍性书籍中,其中两本正在使用 Rspec(最多简短提及 Test::Unit),其中一本正在计划在下一版甚至moar Rspec上,所以现在很清楚谁将成为这场“战斗”的赢家

并允许我选择性地引用 dhh:

重要的当然是我们让人们进行测试,所以工具不应该太重要。

2014年重温:

Minitest 现在已经取代了 Test::Unit 作为当前 Rails 版本的默认设置。就个人而言,我认为与它的前身相比,它值得仔细研究,原因有很多——

  1. 其默认状态
  2. 对 capybara 和 selenium 的更好支持,很大一部分归功于这样的gem
  3. 相对轻巧
  4. 大部分向后兼容 Test::Unit
于 2012-07-25T11:42:08.757 回答
4

Rspec 是一个完全独立的测试框架。Shoulda 是对 Rails 内置框架 Test::Unit 的增强。如果您使用的是 Shoulda,那么您使用的是 Test::Unit,但具有更多功能和更简单、更易读的语法。

我试过 Rspec 和 Shoulda,对我来说,Shouda 胜出。我更喜欢它。但这可能是一个品味问题。

请注意,您可以将 Cucumber 与 Shoulda 一起使用

其他资源?我推荐 ZenTest 和 RedGreen gems。ZenTest 提供自动测试,让您在每次更改文件时自动运行测试。这是一个很大的帮助。

关于夹具与工厂,如果您需要设置一堆相互关联的对象来测试双方或父子关系和/或测试多对多关系,那么夹具工作得更好。实际上,我什至不确定您是否可以在工厂中做到这一点。所以不要忽视固定装置——它们有它们的用途。

于 2009-07-02T04:57:28.007 回答
1

仍然有很多人喜欢 Test::Unit,在某种程度上,这是个人喜好。但是,总的来说,您会发现 RSpec 方面的活动要多得多。真正酷的东西都是用 RSpec 和 Cucumber 完成的,所以如果你自己没有个人偏好,我可能会跳过 Test::Unit。但是,您应该足够熟悉它以阅读其他人用它编写的测试,但我不会预见到这会成为问题。

于 2009-04-14T16:00:55.607 回答