class Minitest::Runnable

表示任何“可运行”的东西,如 TestSpecBenchmark,或任何你可以想到的东西。

此类的子类会自动注册,并在 Runnable.runnables 中可用。

属性

assertions[RW]

本次运行中执行的断言数量。

failures[RW]

运行期间引发的断言(如果有)。

metadata[W]

设置元数据,主要用于 Result.from

time[RW]

运行所花费的时间。

公共类方法

methods_matching(re) 点击切换源代码

返回所有匹配模式 re 的实例方法。

# File minitest-5.25.4/lib/minitest.rb, line 390
def self.methods_matching re
  public_instance_methods(true).grep(re).map(&:to_s)
end
run(reporter, options = {}) 点击切换源代码

负责运行给定类中的所有可运行方法,每个方法都在自己的实例中运行。每个实例都传递给报告器以记录。

# File minitest-5.25.4/lib/minitest.rb, line 405
def self.run reporter, options = {}
  pos = options[:filter]
  neg = options[:exclude]

  pos = Regexp.new $1 if pos.kind_of?(String) && pos =~ %r%/(.*)/%
  neg = Regexp.new $1 if neg.kind_of?(String) && neg =~ %r%/(.*)/%

  filtered_methods = self.runnable_methods
    .select { |m| !pos ||  pos === m || pos === "#{self}##{m}"  }
    .reject { |m|  neg && (neg === m || neg === "#{self}##{m}") }

  return if filtered_methods.empty?

  t0 = name = nil

  @_info_handler = lambda do
    unless reporter.passed? then
      warn "Current results:"
      warn reporter.reporters.grep(SummaryReporter).first
    end

    warn "Current: %s#%s %.2fs" % [self, name, Minitest.clock_time - t0]
  end

  with_info_handler reporter do
    filtered_methods.each do |method_name|
      name = method_name
      t0 = Minitest.clock_time

      run_one_method self, method_name, reporter
    end
  end
end
run_one_method(klass, method_name, reporter) 点击切换源代码

运行单个方法,并让报告器记录结果。这被认为是内部 API,但已从 run 中分解出来,以便子类可以专门化单个测试的运行。有关示例,请参阅 Minitest::ParallelTest::ClassMethods。

# File minitest-5.25.4/lib/minitest.rb, line 445
def self.run_one_method klass, method_name, reporter
  reporter.prerecord klass, method_name
  reporter.record Minitest.run_one_method(klass, method_name)
end
runnable_methods() 点击切换源代码

Runnable 的每个子类都负责重写此方法以返回所有可运行的方法。请参阅 methods_matching。

# File minitest-5.25.4/lib/minitest.rb, line 481
def self.runnable_methods
  raise NotImplementedError, "subclass responsibility"
end
runnables() 点击切换源代码

返回 Runnable 的所有子类。

# File minitest-5.25.4/lib/minitest.rb, line 488
def self.runnables
  @@runnables
end
test_order() 点击切换源代码

定义运行测试的顺序(默认为 :random)。重写此方法或使用便捷方法来更改测试顺序。

# File minitest-5.25.4/lib/minitest.rb, line 454
def self.test_order
  :random
end

公共实例方法

metadata() 点击切换源代码

您附加到发送给报告器的测试结果的元数据。

懒惰地初始化为哈希,以减少内存占用。

注意:此数据必须是纯(可序列化的)数据!哈希!数组!字符串!

# File minitest-5.25.4/lib/minitest.rb, line 527
def metadata
  @metadata ||= {}
end
metadata?() 点击切换源代码

如果存在元数据,则返回 true。

# File minitest-5.25.4/lib/minitest.rb, line 539
def metadata?
  defined? @metadata
end
name() 点击切换源代码

运行的名称。

# File minitest-5.25.4/lib/minitest.rb, line 376
def name
  @NAME
end
name=(o) 点击切换源代码

设置运行的名称。

# File minitest-5.25.4/lib/minitest.rb, line 383
def name= o
  @NAME = o
end
passed?() 点击切换源代码

本次运行是否通过?

注意:跳过的运行不被视为通过,但它们不会导致进程以非零值退出。

# File minitest-5.25.4/lib/minitest.rb, line 556
def passed?
  raise NotImplementedError, "subclass responsibility"
end
result_code() 点击切换源代码

返回一个基于运行结果打印的单字符字符串。是 ".""F""E""S" 中的一个。

# File minitest-5.25.4/lib/minitest.rb, line 565
def result_code
  raise NotImplementedError, "subclass responsibility"
end
run() 点击切换源代码

运行单个方法。需要返回 self。

# File minitest-5.25.4/lib/minitest.rb, line 546
def run
  raise NotImplementedError, "subclass responsibility"
end
skipped?() 点击切换源代码

本次运行是否被跳过?有关更多信息,请参阅 passed?

# File minitest-5.25.4/lib/minitest.rb, line 572
def skipped?
  raise NotImplementedError, "subclass responsibility"
end