4

有一个问题在 Ruby 中,如何控制 Test::Unit 测试的运行顺序?并想通过参考来回答test_order = :defined

文档Test::Unit::TestCase.test_order说:

设置当前测试顺序。

以下是可用订单:

  • :字母默认值。测试按字母顺序排序。
  • :random 测试以随机顺序排序。
  • :defined 测试按定义的顺序排序。

所以我认为这会按照方法定义的顺序执行测试:

gem 'test-unit'
require 'test/unit'
class Mytest < Test::Unit::TestCase
  test_order = :defined
  #~ test_order = :random
  #~ test_order = :alphabetic #default
  def test_b
    p :b
  end
  def test_a
    p :a
  end
  def test_c
    p :c
  end
end

但是当我执行它时(用 test-unit 2.4.9 和 2.5 测试),我得到了字母顺序:

Started
:a
.:b
.:c
.

有什么问题?我的代码中是否缺少某些内容,文档是否错误或是否存在错误?

4

1 回答 1

3

我发现了解决方案,或者更好的是我的错:

gem 'test-unit'
require 'test/unit'
class Mytest < Test::Unit::TestCase
  self.test_order = :defined
  #~ self.test_order = :random
  #~ self.test_order = :alphabetic #default
  def test_b
    p :b
  end
  def test_a
    p :a
  end
  def test_c
    p :c
  end
end

区别:我test_order = :defined在课堂上使用过。发生了什么:创建了一个局部变量test_order

self.test_order = :defined方法test_order=调用。

于 2012-12-12T21:13:39.603 回答