Ties everything together. If you subclass and add your own test methods, it takes care of making them into tests and wrapping those tests into a suite. It also does the nitty-gritty of actually running an individual test and collecting its results into a Test::Unit::TestResult object.
These exceptions are not caught by run.
Creates a new instance of the fixture for running the test represented by test_method_name.
# File test/unit/testcase.rb, line 39 def initialize(test_method_name) unless(respond_to?(test_method_name) and (method(test_method_name).arity == 0 || method(test_method_name).arity == -1)) throw :invalid_test end @method_name = test_method_name @test_passed = true end
Rolls up all of the test* methods in the fixture into one suite, creating a new instance of the fixture for each method.
# File test/unit/testcase.rb, line 52 def self.suite method_names = public_instance_methods(true) tests = method_names.delete_if {|method_name| method_name !~ /^test./} suite = TestSuite.new(name) tests.sort.each do |test| catch(:invalid_test) do suite << new(test) end end if (suite.empty?) catch(:invalid_test) do suite << new("default_test") end end return suite end
It's handy to be able to compare TestCase instances.
# File test/unit/testcase.rb, line 153 def ==(other) return false unless(other.kind_of?(self.class)) return false unless(@method_name == other.method_name) self.class == other.class end
# File test/unit/testcase.rb, line 108 def default_test flunk("No tests were specified") end
Returns a human-readable name for the specific test that this instance of TestCase represents.
# File test/unit/testcase.rb, line 143 def name "#{@method_name}(#{self.class.name})" end
Runs the individual test method represented by this instance of the fixture, collecting statistics, failures and errors in result.
# File test/unit/testcase.rb, line 73 def run(result) yield(STARTED, name) @_result = result begin setup __send__(@method_name) rescue AssertionFailedError => e add_failure(e.message, e.backtrace) rescue Exception raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) ensure begin teardown rescue AssertionFailedError => e add_failure(e.message, e.backtrace) rescue Exception raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) end end result.add_run yield(FINISHED, name) end
Called before every test method runs. Can be used to set up fixture information.
# File test/unit/testcase.rb, line 100 def setup end
Called after every test method runs. Can be used to tear down fixture information.
# File test/unit/testcase.rb, line 105 def teardown end
Overridden to return name.
# File test/unit/testcase.rb, line 148 def to_s name end