Class: Test::Unit::TestCase
- Inherits:
-
Object
- Object
- Test::Unit::TestCase
- Includes:
- Assertions, Attribute, ErrorHandler, ExceptionHandler, FailureHandler, Fixture, Priority, TestCaseNotificationSupport, TestCaseOmissionSupport, TestCasePendingSupport, Util::BacktraceFilter
- Defined in:
- lib/test/unit/testcase.rb
Overview
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
Constant Summary collapse
- STARTED =
name + "::STARTED"
- FINISHED =
name + "::FINISHED"
- DESCENDANTS =
[]
Constants included from Util::BacktraceFilter
Util::BacktraceFilter::TESTUNIT_FILE_SEPARATORS, Util::BacktraceFilter::TESTUNIT_PREFIX, Util::BacktraceFilter::TESTUNIT_RB_FILE
Constants included from Assertions
Constants included from ErrorHandler
ErrorHandler::PASS_THROUGH_EXCEPTIONS
Instance Attribute Summary collapse
-
#method_name ⇒ Object
readonly
Returns the value of attribute method_name.
Class Method Summary collapse
- .inherited(sub_class) ⇒ Object
-
.suite ⇒ Object
Rolls up all of the test* methods in the fixture into one suite, creating a new instance of the fixture for each method.
Instance Method Summary collapse
-
#==(other) ⇒ Object
It’s handy to be able to compare TestCase instances.
- #default_test ⇒ Object
-
#initialize(test_method_name) ⇒ TestCase
constructor
Creates a new instance of the fixture for running the test represented by test_method_name.
- #interrupted? ⇒ Boolean
-
#name ⇒ Object
Returns a human-readable name for the specific test that this instance of TestCase represents.
-
#run(result) ⇒ Object
Runs the individual test method represented by this instance of the fixture, collecting statistics, failures and errors in result.
-
#setup ⇒ Object
Called before every test method runs.
- #size ⇒ Object
-
#teardown ⇒ Object
Called after every test method runs.
-
#to_s ⇒ Object
Overridden to return #name.
Methods included from Util::BacktraceFilter
Methods included from Assertions
#assert, #assert_block, #assert_boolean, #assert_equal, #assert_false, #assert_in_delta, #assert_instance_of, #assert_kind_of, #assert_match, #assert_nil, #assert_no_match, #assert_not_equal, #assert_not_nil, #assert_not_same, #assert_nothing_raised, #assert_nothing_thrown, #assert_operator, #assert_raise, #assert_raises, #assert_respond_to, #assert_same, #assert_send, #assert_throws, #assert_true, #build_message, #flunk, use_pp=
Methods included from Priority
included, #priority_setup, #priority_teardown
Methods included from TestCaseNotificationSupport
Methods included from TestCaseOmissionSupport
included, #omit, #omit_if, #omit_unless
Methods included from TestCasePendingSupport
Methods included from FailureHandler
Methods included from ErrorHandler
Methods included from ExceptionHandler
Methods included from Fixture
Methods included from Attribute
Constructor Details
#initialize(test_method_name) ⇒ TestCase
Creates a new instance of the fixture for running the test represented by test_method_name.
118 119 120 121 122 123 124 |
# File 'lib/test/unit/testcase.rb', line 118 def initialize(test_method_name) throw :invalid_test unless respond_to?(test_method_name) throw :invalid_test if method(test_method_name).arity > 0 @method_name = test_method_name @test_passed = true @interrupted = false end |
Instance Attribute Details
#method_name ⇒ Object (readonly)
Returns the value of attribute method_name.
114 115 116 |
# File 'lib/test/unit/testcase.rb', line 114 def method_name @method_name end |
Class Method Details
.inherited(sub_class) ⇒ Object
89 90 91 |
# File 'lib/test/unit/testcase.rb', line 89 def inherited(sub_class) DESCENDANTS << sub_class end |
.suite ⇒ Object
Rolls up all of the test* methods in the fixture into one suite, creating a new instance of the fixture for each method.
96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/test/unit/testcase.rb', line 96 def suite method_names = public_instance_methods(true).collect {|name| name.to_s} tests = method_names.delete_if {|method_name| method_name !~ /^test./} suite = TestSuite.new(name, self) 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 suite end |
Instance Method Details
#==(other) ⇒ Object
It’s handy to be able to compare TestCase instances.
239 240 241 242 243 |
# File 'lib/test/unit/testcase.rb', line 239 def ==(other) return false unless(other.kind_of?(self.class)) return false unless(@method_name == other.method_name) self.class == other.class end |
#default_test ⇒ Object
219 220 221 |
# File 'lib/test/unit/testcase.rb', line 219 def default_test flunk("No tests were specified") end |
#interrupted? ⇒ Boolean
245 246 247 |
# File 'lib/test/unit/testcase.rb', line 245 def interrupted? @interrupted end |
#name ⇒ Object
Returns a human-readable name for the specific test that this instance of TestCase represents.
229 230 231 |
# File 'lib/test/unit/testcase.rb', line 229 def name "#{@method_name}(#{self.class.name})" end |
#run(result) ⇒ Object
Runs the individual test method represented by this instance of the fixture, collecting statistics, failures and errors in result.
129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 |
# File 'lib/test/unit/testcase.rb', line 129 def run(result) begin @_result = result yield(STARTED, name) begin run_setup __send__(@method_name) 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 end end |
#setup ⇒ Object
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
183 184 |
# File 'lib/test/unit/testcase.rb', line 183 def setup end |
#size ⇒ Object
223 224 225 |
# File 'lib/test/unit/testcase.rb', line 223 def size 1 end |
#teardown ⇒ Object
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
216 217 |
# File 'lib/test/unit/testcase.rb', line 216 def teardown end |
#to_s ⇒ Object
Overridden to return #name.
234 235 236 |
# File 'lib/test/unit/testcase.rb', line 234 def to_s name end |