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