这些天似乎每个人都在使用 rspec,但默认情况下,rails 仍然与 test::unit 捆绑在一起。
rspec 与测试单元相比有什么主要优势吗?很难获得有关此主题的直接信息...
这些天似乎每个人都在使用 rspec,但默认情况下,rails 仍然与 test::unit 捆绑在一起。
rspec 与测试单元相比有什么主要优势吗?很难获得有关此主题的直接信息...
在这些讨论中通常会大量关注语法,这当然是主观的,但 RSpec 提供了一些有用的特性,这些特性在测试/单元、minitest 或其扩展库中是看不到的。对我来说,三大巨头是:
可读的输出(TURN 对此有帮助,但它没有打印出您需要复制的命令以运行失败的单个示例)。
明智的 CTRL-C。在 rspec-2 中,当您按下 CTRL-C 时,此时正在运行的示例完成(您可以第二次按下 CTRL-C 以立即停止它),所有这些都在钩子运行之后,并且您得到相同的结果否则你会得到的输出报告。有多少次你在前 50 个左右的点中看到了 F,却没有得到指示哪些测试实际上失败了。使用 rspec-2,这不会发生。
与每个示例和组关联的元数据。RSpec 使用它来支持根据各种条件(位置、名称、ruby 版本、命令行标签等)选择要运行的示例,以及基于相同条件的模块的包含/扩展。
还有更多,但这只是给你一个想法。当然,我有偏见,所以对我的建议持保留态度。
FWIW,大卫
我认为这主要是主观的。与 rspec 的基于匹配器的断言相比,我更喜欢assert
基于传统的测试,所以我坚持使用Test::Unit
. 我认为 rspec 更强大的一个领域是内置的存根内容(您必须使用其他库来完成此操作Test::Unit
)。