好人。我喜欢TDD和测试。我个人认为在开发时这是一个很好的做法。
因为我正在练习红宝石,所以我从未觉得有必要像rspec那样尝试一些“测试宝石”。我尝试过Cucumber进行高级测试和webrat进行集成测试。
您喜欢什么宝石以及为什么?
请提供一些示例或指向解释差异的网站。
例如,我为什么要从基本单元测试切换到FWK导轨给我rspec?从webrat到capybara?从黄瓜到扒手?
这可能是徒劳的事情,比如:我喜欢这个,因为控制台输出是彩色的更重要的事情:我喜欢那个因为我觉得写作时更有表现力++反对:++++ 。
如果这个问题已经存在,请将链接发送给我!
修改
我将标题更改为更明确!
答案 0 :(得分:3)
ruby只提供了大量的测试框架,选择一个真正的个人偏好。我个人最喜欢的是riot
Riot对如何编写测试做了一些假设。两个大问题是你应该每次测试测试一个“东西”,并且断言不应该修改那个“东西”。通过做出这些假设,测试可以大大加快,因为它们只需要每个块运行一次设置(而不是每次测试一次)。
自述文件中的一个例子
context "An Array" do
setup { Array.new }
context "with one element" do
setup { topic << "foo" }
asserts("is not empty") { !topic.empty? }
asserts("returns the element on #first") { topic.first == "foo" }
end
end
topic
是您引用setup
中设置内容的方式。这也只是语法的基础知识,有一个“断言宏”的想法让你干掉你的测试。您也可以使用denies
而不是asserts
作为否定断言。考虑到这两点,上面的例子可以写成
context "An Array" do
setup { Array.new }
context "with one element" do
setup { topic << "foo" }
denies("is not empty") { topic }.empty?
asserts("returns the element on #first") { topic.first }.equals('foo')
end
end
仍然是冰山的一角,但希望这给你至少一点感觉。
我会说除了速度之外,我最喜欢骚乱的是它的结构。它带走了一些自由,但实际上只是做坏事的自由。我发现我遇到问题的唯一时间就是我要写一个糟糕的测试,而不能这样做会迫使我退后一步思考我在做什么。
我提到的另一件事TDD是spork。这个想法是加载rails环境很容易需要30-40秒,当你做tdd时,这可能会非常快。 spork做的是设置rails环境,然后在每次测试运行时分叉进程。一切都已经在内存中,因此测试运行开始非常快。
目前,他们支持rspec,黄瓜和测试/单位。 (当我有一段时间时,有一天计划提供骚乱支持)
答案 1 :(得分:2)
我喜欢minitest(cheatsheet),因为它非常小而且非常快。它包括单元测试和规范系统(以及模拟和基准测试)。我个人赞成单元测试而不是规格,因为Cucumber之类的语法似乎是“只读”(与'只写'语言相反,如Perl或APL :)。
答案 2 :(得分:1)