【问题标题】:How to make MiniTests run tests in alphabetical order of Test classes?如何让 MiniTests 按测试类的字母顺序运行测试?
【发布时间】:2016-02-29 19:52:50
【问题描述】:

在 MiniTest 中,我知道我们可以让测试方法按字母顺序运行,但它不适用于测试类。有什么方法可以让 MiniTest 按 Test 类的字母顺序运行?

我知道测试类之间不应该有任何依赖关系,因为这不是一个好方法,但是有没有任何可能的方法可以实现这一点?

【问题讨论】:

  • 也许可以使用 Minitest 扩展来执行测试顺序。只是一个想法,还没有真正想过是否可以实现。
  • 您能详细说明一下吗?使用 minitest 扩展是什么意思?

标签: minitest ruby-on-rails-4.2


【解决方案1】:

我们想出了解决方案,以防万一有人在寻找解决方案

看看下面的帖子:

https://github.com/seattlerb/minitest/issues/514

以下是线程中的要点,以防链接断开:

正确。正如您在要点中看到的,测试方法仍然按字母顺序运行,但测试类不是。

测试顺序依赖项是您的测试中的错误,可能并且将会导致生产代码中的错误。您应该认真考虑修复您的测试,以便每个测试都是独立的。 100% 成功的完全随机化应该是您的目标。如果您有很多测试,这可能是一项艰巨的任务,但https://github.com/seattlerb/minitest-bisect 绝对可以帮助您。

如果您出于某种原因绝对 100% 坚持保持您的测试顺序依赖性(错误),您将不得不修改 Minitest.__run。

添加类似于以下的初始化补丁Minitest

module 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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-13
    • 2018-08-21
    • 2020-09-29
    • 2015-12-21
    • 2015-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多