Object
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.
You can run two hooks before/after a TestCase run.
Example:
class TestMyClass < Test::Unit::TestCase class << self def startup ... end def shutdown ... end end def setup ... end def teardown ... end def test_my_method1 ... end def test_my_method2 ... end end
Here is a call order:
startup
setup
test_my_method1
teardown
setup
test_my_method2
teardown
shutdown
Describes a test.
The following example associates “register a normal user” description with “test_register” test.
description "register a normal user" def test_register ... end
# File lib/test/unit/testcase.rb, line 251
def description(value, target=nil)
attribute(:description, value, {}, target || [])
end
Creates a new instance of the fixture for running the test represented by test_method_name.
# File lib/test/unit/testcase.rb, line 298 def initialize(test_method_name) throw :invalid_test unless respond_to?(test_method_name) test_method = method(test_method_name) throw :invalid_test if test_method.arity > 0 owner = Util::MethodOwnerFinder.find(self, test_method_name) if owner.class != Module and self.class != owner throw :invalid_test end @method_name = test_method_name @test_passed = true @interrupted = false end
Called after every test case runs. Can be used to tear down fixture information used in test case scope.
Here is an example test case:
class TestMyClass < Test::Unit::TestCase class << self def shutdown ... end end def teardown ... end def test_my_class1 ... end def test_my_class2 ... end end
Here is a call order:
test_my_class1 (or test_my_class2)
teardown
test_my_class2 (or test_my_class1)
teardown
shutdown
Note that you should not assume test order. Tests should be worked in any order.
# File lib/test/unit/testcase.rb, line 198
def shutdown
end
Called before every test case runs. Can be used to set up fixture information used in test case scope.
Here is an example test case:
class TestMyClass < Test::Unit::TestCase class << self def startup ... end end def setup ... end def test_my_class1 ... end def test_my_class2 ... end end
Here is a call order:
startup
setup
test_my_class1 (or test_my_class2)
setup
test_my_class2 (or test_my_class1)
Note that you should not assume test order. Tests should be worked in any order.
# File lib/test/unit/testcase.rb, line 162
def startup
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 lib/test/unit/testcase.rb, line 113 def suite suite = TestSuite.new(name, self) collect_test_names.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 suite end
Defines a test in declarative syntax.
The following two test definitions are the same:
description "register user" def test_register_user ... end test "register user" do ... end
# File lib/test/unit/testcase.rb, line 234 def test(test_description, &block) normalized_description = test_description.gsub(/[^a-zA-Z\d_]+/, '_') method_name = "test_#{normalized_description}".to_sym define_method(method_name, &block) description(test_description, method_name) end
Returns the current test order. This returns :alphabetic by default.
# File lib/test/unit/testcase.rb, line 205 def test_order @@test_orders[self] || AVAILABLE_ORDERS.first end
Sets the current test order.
Here are the available order:
Default. Tests are sorted in alphabetic order.
Tests are sorted in random order.
Tests are sorted in defined order.
# File lib/test/unit/testcase.rb, line 218
def test_order=(order)
@@test_orders[self] = order
end
It’s handy to be able to compare TestCase instances.
# File lib/test/unit/testcase.rb, line 433 def ==(other) return false unless(other.kind_of?(self.class)) return false unless(@method_name == other.method_name) self.class == other.class end
# File lib/test/unit/testcase.rb, line 404 def default_test flunk("No tests were specified") end
Returns a description for the test. A description will be associated by Test::Unit::TestCase.test or Test::Unit::TestCase.description.
Returns a name for the test for no description test.
# File lib/test/unit/testcase.rb, line 423
def description
self[:description] || name
end
# File lib/test/unit/testcase.rb, line 439 def interrupted? @interrupted end
Returns a human-readable name for the specific test that this instance of TestCase represents.
# File lib/test/unit/testcase.rb, line 414
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 lib/test/unit/testcase.rb, line 314 def run(result) begin @_result = result yield(STARTED, name) begin run_setup run_test rescue Exception @interrupted = true raise unless handle_exception($!) ensure begin run_teardown rescue Exception raise unless handle_exception($!) end end result.add_run yield(FINISHED, name) ensure # @_result = nil # For test-spec's after_all :< end end
Called before every test method runs. Can be used to set up fixture information.
You can add additional setup tasks by the following code:
class TestMyClass < Test::Unit::TestCase def setup ... end setup def my_setup1 ... end setup def my_setup2 ... end def test_my_class ... end end
Here is a call order:
setup
my_setup1
my_setup2
test_my_class
# File lib/test/unit/testcase.rb, line 368
def setup
end
Called after every test method runs. Can be used to tear down fixture information.
You can add additional teardown tasks by the following code:
class TestMyClass < Test::Unit::TestCase def teardown ... end teardown def my_teardown1 ... end teardown def my_teardown2 ... end def test_my_class ... end end
Here is a call order:
test_my_class
my_teardown2
my_teardown1
teardown
# File lib/test/unit/testcase.rb, line 401
def teardown
end
Overridden to return name.
# File lib/test/unit/testcase.rb, line 428
def to_s
name
end
Generated with the Darkfish Rdoc Generator 2.