class Minitest::Test
Subclass Test
to create your own tests. Typically you’ll want a Test
subclass per implementation class.
Public Class Methods
Call this at the top of your tests when you absolutely positively need to have ordered tests. In doing so, you’re admitting that you suck and your tests are weak.
# File minitest-5.16.3/lib/minitest/test.rb, line 31 def self.i_suck_and_my_tests_are_order_dependent! class << self undef_method :test_order if method_defined? :test_order define_method :test_order do :alpha end end end
Make diffs for this Test
use pretty_inspect so that diff in assert_equal can have more details. NOTE: this is much slower than the regular inspect but much more usable for complex objects.
# File minitest-5.16.3/lib/minitest/test.rb, line 44 def self.make_my_diffs_pretty! require "pp" define_method :mu_pp, &:pretty_inspect end
Call this at the top of your tests when you want to run your tests in parallel. In doing so, you’re admitting that you rule and your tests are awesome.
# File minitest-5.16.3/lib/minitest/test.rb, line 55 def self.parallelize_me! include Minitest::Parallel::Test extend Minitest::Parallel::Test::ClassMethods end
Returns all instance methods starting with “test_”. Based on test_order, the methods are either sorted, randomized (default), or run in parallel.
# File minitest-5.16.3/lib/minitest/test.rb, line 65 def self.runnable_methods methods = methods_matching(/^test_/) case self.test_order when :random, :parallel then srand Minitest.seed methods.sort.shuffle when :alpha, :sorted then methods.sort else raise "Unknown test_order: #{self.test_order.inspect}" end end
Defines the order to run tests (:random by default). Override this or use a convenience method to change it for your tests.
# File minitest-5.16.3/lib/minitest/test.rb, line 83 def self.test_order :random end
Public Instance Methods
# File minitest-5.16.3/lib/minitest/test.rb, line 211 def neuter_exception e bt = e.backtrace msg = e.message.dup new_exception e.class, msg, bt # e.class can be a problem... rescue msg.prepend "Neutered Exception #{e.class}: " new_exception RuntimeError, msg, bt, true # but if this raises, we die end
# File minitest-5.16.3/lib/minitest/test.rb, line 222 def new_exception klass, msg, bt, kill = false ne = klass.new msg ne.set_backtrace bt if kill then ne.instance_variables.each do |v| ne.remove_instance_variable v end end Marshal.dump ne # can raise TypeError ne end
Runs a single test with setup/teardown hooks.
# File minitest-5.16.3/lib/minitest/test.rb, line 92 def run with_info_handler do time_it do capture_exceptions do before_setup; setup; after_setup self.send self.name end TEARDOWN_METHODS.each do |hook| capture_exceptions do self.send hook end end end end Result.from self # per contract end