2010-01-12 105 views
3

正如我已经写了一个Rails应用程序测试套件,我注意到,有两种不同的方式来创建测试,一个test块和一个普通的方法:红宝石测试:块与方法

test "the truth" do 
    assert true 
end 

def test_for_something_else 
    assert true 
end 

有两个测试结构之间有什么区别?我应该什么时候使用一个?

编辑:在进一步的检查,写成方法在rake:stats计数而那些与test语法编写不测试。有一个区别...

回答

4

我觉得块语法是由于行为驱动开发框架,如RSpec的普及增加,他们更自然应该做X ...语法。最后,这是个人喜好的问题。

+0

很酷。我假设Rails没有修改rake:stats代码来解释更新的语法。 – Andrew 2010-01-12 11:27:54

+0

没错。自去年2月份以来已有一张门票可供使用:https://rails.lighthouseapp.com/projects/8994/tickets/1915-rake-stats-bad-method-count – 2010-01-12 18:48:48

1

我希望技术上两者之间没有区别。前者允许你用一个字符串来描述你的测试,而对于后一种形式,你必须提出一个描述性的方法名称,有时候这个名字很长,很难阅读[1]。由于这种差异,我个人更喜欢前者,但最终取决于个人/项目偏好。

[1] "add two interleaving timers that trigger in the opposite order"test_addTwoInterleavingTimersThatTriggerInTheOppositeOrder(...)

0

我发现的一个区别/烦恼是在Vim中用Ctags和TagList插件。如果您的测试不是作为函数编写的,则不能使用:TlistToggle命令快速浏览它们。如果您在一个文件中进行了大量测试,则可以使其更快地导航。