class Minitest::Test

Subclass Test to create your own tests. Typically you’ll want a Test subclass per implementation class.

See Minitest::Assertions

Public Class Methods

i_suck_and_my_tests_are_order_dependent!() click to toggle source

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_my_diffs_pretty!() click to toggle source

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
parallelize_me!() click to toggle source

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
runnable_methods() click to toggle source

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
test_order() click to toggle source

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

neuter_exception(e) click to toggle source
# 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
new_exception(klass, msg, bt, kill = false) click to toggle source
# 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
run() click to toggle source

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