class Minitest::Runnable
表示任何“可运行”的东西,如 Test
,Spec
,Benchmark
,或任何你可以想到的东西。
此类的子类会自动注册,并在 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