在MiniTest中,我知道我们可以使测试方法按字母顺序运行,但是测试类不可行。有没有什么方法可以让MiniTest按照测试类的字母顺序运行?
我知道测试类之间不应该有任何依赖关系,因为它不是一个好的方法,但是我们可以通过任何可能的方式实现这一点吗?
答案 0 :(得分:1)
我们想出了解决方案,以防万一有人在寻找一个
看看以下主题:
https://github.com/seattlerb/minitest/issues/514
以下是线程的要点,以防链接断开:
正确。正如您在要点中看到的那样,测试方法仍按字母顺序运行,但测试类不是。
测试订单依赖项是测试中的错误,可能会导致生产代码中的错误。您应该认真考虑修复测试,以便每个测试都与订单无关。 100%成功的完全随机化应该是您的目标。如果您有很多测试,这可能是一项艰巨的任务,但https://github.com/seattlerb/minitest-bisect绝对有助于此。
如果您出于某种原因绝对100%死于保持测试订单依赖性(错误),那么您必须使用补丁Minitest .__ run。
添加一个类似于以下
的修补程序修补Minitestmodule Minitest
def self.__run reporter, options
suites = Runnable.runnables
parallel, other = suites.partition { |s| s.test_order == :parallel }
random, sorted = other.partition { |s| s.test_order == :random }
sorted.map { |suite| suite.run reporter, options } +
random.shuffle.map { |suite| suite.run reporter, options } +
parallel.shuffle.map { |suite| suite.run reporter, options }
end
end