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
Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.
If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.
If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.
If you want to help improve the Ruby documentation, please see Improve the docs, or visit Documenting-ruby.org.