Shoulda语句是否按照定义的顺序执行?

时间:2013-09-21 08:40:34

标签: ruby unit-testing testunit shoulda

我正在尝试为测试自动化实施shoulda。我试过这段代码:

require 'test/unit'
require 'shoulda'
require 'shoulda-context'

class TestClass < Test::Unit::TestCase
  context 'Languages' do
    should 'Ruby' do
      puts 'Ruby'
    end

    should 'Java' do
      puts 'Java'
    end

    should 'Python' do
      puts 'Python'
    end
  end
end

当我执行该代码时,它按照shoulda测试方法的字母顺序输出:

Java
Python
Ruby

实际上,我想按照我编写方法的顺序输出输出:

Ruby
Java
Python

要做到这一点,我必须在代码中使用什么?

1 个答案:

答案 0 :(得分:4)

实际上,最好不要按特定顺序运行测试。最好以随机顺序运行它们,因为这样可以识别是否存在依赖于其他测试的测试。如果测试只按特定顺序传递,则表明您做错了。

如果你想这样做:

class TestClass < Test::Unit::TestCase
  context 'Languages' do
    self.test_order = :defined
    ...

请参阅:http://test-unit.rubyforge.org/test-unit/en/Test/Unit/TestCase.html#test_order=-class_method