2013-06-24 22 views
0

我下面的代码:按照定义的顺序运行测试应该做些什么?

require 'test/unit' 

class Flow < Test::Unit::TestCase 
    def test_hi 
     puts "Hi" 
    end 

    def test_working 
     puts "Working" 
    end 

    def test_bye 
     puts "Bye" 
    end 

    def test_tired 
     puts "Tired" 
    end 
end 

当我运行它,它会显示以下内容:

Bye 
Hi 
Tired 
Working 

望着输出,我可以猜测,该测试是在测试名称的字母顺序执行(即test_text中文本字段的字母顺序)。

其实,我想按我定义的顺序执行我的测试。对于上面的脚本,我想要以下输出:

Hi 
Working 
Bye 
Tired 

我该如何做到这一点?

+6

顺序依赖测试是邪恶的。不,它是邪恶的。它会适得其反,而且会非常痛苦。你已被警告。 –

+0

您能否建议另一个我们可以实现这个功能的Ruby测试框架? – TDHM

+2

你不需要实现它,那是我的观点。如果你需要这个,你做错了。 –

回答

4

虽然我塞尔吉奥同意,这不应该做的,我发现这个通过观察测试::单位的来源:: TestCase的

https://github.com/test-unit/test-unit/blob/master/lib/test/unit/testcase.rb):

# Sets the current test order. 
    # 
    # Here are the available _order_: 
    # [:alphabetic] 
    # Default. Tests are sorted in alphabetic order. 
    # [:random] 
    # Tests are sorted in random order. 
    # [:defined] 
    # Tests are sorted in defined order. 
    def test_order=(order) 
     @@test_orders[self] = order 
    end 

所以,如果您将TestCase的test_order设置为:defined,它应该工作。

+0

我试着用test_order =:defined,但它不能按预期工作,当我尝试self.test_order =:定义它时抛出错误:test.rb:4:in'':未定义方法'test_order ='for Flow:Class NoMethodError) from test.rb:3:'

' – TDHM

+0

感谢mario指向doc。这有助于理解测试:单位 – TDHM

+0

没问题,这只是寻找参考的自然选择。虽然我仍然困惑,为什么这不像广告。 – mario

相关问题