如何以有序的顺序运行MiniTest :: Unit测试?

时间:2014-10-09 14:29:25

标签: ruby unit-testing minitest

MiniTest并行运行我的测试用例。有没有办法强制按顺序运行测试用例?

def test_1
end

def test_2
end

如何在test_2之前强制test_1运行?

2 个答案:

答案 0 :(得分:21)

您可以使用i_suck_and_my_tests_are_order_dependent!() class method

class MyTest < MiniTest::Unit::TestCase
  i_suck_and_my_tests_are_order_dependent!   # <----

  def test_1
    p 1
  end

  def test_2
    p 2
  end
end

但顾名思义,让测试依赖于订单并不是一个好主意。

答案 1 :(得分:2)

使用MiniTest进行与测试相关的测试

如果你想强制进行有序测试,尽管这样做很脆弱,你可以调用Minitest::Test#i_suck_and_my_tests_are_order_dependent!。文档说:

  

当你绝对需要进行有序测试时,请在测试的顶部调用它。这样做,你承认你很糟糕,你的测试很弱。

测试用例应该是独立的。依赖于顺序的测试是一种代码味道,MiniTest方法的固定名称使得MiniTest作者认为您需要使用代码执行其他操作时非常清楚。

状态应该在setup和teardown块中定义,而不是在测试排序中定义。 YMMV。