如果有的话,rspec相对于test :: unit有哪些主要优点?

时间:2011-09-01 21:05:31

标签: ruby-on-rails ruby rspec testunit

这些天似乎每个人都在使用rspec,但默认情况下rails仍与test :: unit捆绑在一起。

rspec相对于测试单位有什么主要优势吗?很难直接了解这个主题...

3 个答案:

答案 0 :(得分:5)

在这些讨论中,通常很多关注语法,这当然是主观的,但RSpec提供了一些有用的功能,这些功能在test / unit,minitest或其扩展库中无处可见。对我来说,三大巨头是:

  1. 可读输出(TURN对此有帮助,但它没有打印出需要复制的命令以运行失败的单个示例。)

  2. 明智的CTRL-C。在rspec-2中,当你按下CTRL-C时,那个时刻正在运行的例子结束(你可以第二次点击CTRL-C立即停止它),并且所有这些都是在钩子运行之后,你会得到相同的你会得到的输出报告。你有多少次在前50个左右的点中看过F,并且没有给出哪些测试实际失败的迹象。使用rspec-2,这不会发生。

  3. 与每个示例和组关联的元数据。 RSpec使用它来支持根据各种标准(位置,名称,ruby版本,命令行标记等)选择要运行的示例,以及基于相同的模块的包含/扩展。

  4. 还有更多,但这只是为了给你一个想法。当然,我有偏见,所以我的建议就是一丝不苟。

    FWIW, 大卫

答案 1 :(得分:1)

  

默认情况下,rails仍与test :: unit捆绑在一起。

可能是因为

DHH Offended By RSpec, Says Test::Unit Is Just Great

答案 2 :(得分:0)

我认为这主要是主观的。我更喜欢更传统的基于assert的测试而不是基于匹配器的断言,所以我坚持使用Test::Unit。我认为rspec更强大的一个领域是内置的存根(你必须使用额外的库来实现Test::Unit)。