Extended maintenance of Ruby versions 1.8.7 and 1.9.2 ended on July 31, 2014. Read more
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