Class: Test::Unit::TestCase
- Inherits:
-
Object
- Object
- Test::Unit::TestCase
- Includes:
- Assertions, 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.
Constant Summary collapse
- STARTED =
name + "::STARTED"
- FINISHED =
name + "::FINISHED"
- PASSTHROUGH_EXCEPTIONS =
These exceptions are not caught by #run.
[NoMemoryError, SignalException, Interrupt, SystemExit]
Constants included from Util::BacktraceFilter
Util::BacktraceFilter::TESTUNIT_FILE_SEPARATORS, Util::BacktraceFilter::TESTUNIT_PREFIX, Util::BacktraceFilter::TESTUNIT_RB_FILE
Constants included from Assertions
Instance Attribute Summary collapse
-
#method_name ⇒ Object
readonly
Returns the value of attribute method_name.
Class Method Summary collapse
-
.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.
-
#name ⇒ Object
Returns a human-readable name for the specific test that this instance of TestCase represents.
-
#run(result) {|STARTED, name| ... } ⇒ 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_equal, #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, #build_message, #flunk, use_pp=
Constructor Details
#initialize(test_method_name) ⇒ TestCase
Creates a new instance of the fixture for running the test represented by test_method_name.
39 40 41 42 43 44 45 46 47 |
# File 'lib/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 |
Instance Attribute Details
#method_name ⇒ Object (readonly)
Returns the value of attribute method_name.
26 27 28 |
# File 'lib/test/unit/testcase.rb', line 26 def method_name @method_name end |
Class Method Details
.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.
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/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 |
Instance Method Details
#==(other) ⇒ Object
It’s handy to be able to compare TestCase instances.
153 154 155 156 157 |
# File 'lib/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 |
#default_test ⇒ Object
108 109 110 |
# File 'lib/test/unit/testcase.rb', line 108 def default_test flunk("No tests were specified") end |
#name ⇒ Object
Returns a human-readable name for the specific test that this instance of TestCase represents.
143 144 145 |
# File 'lib/test/unit/testcase.rb', line 143 def name "#{@method_name}(#{self.class.name})" end |
#run(result) {|STARTED, name| ... } ⇒ Object
Runs the individual test method represented by this instance of the fixture, collecting statistics, failures and errors in result.
73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 |
# File 'lib/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., e.backtrace) rescue Exception raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) ensure begin teardown rescue AssertionFailedError => e add_failure(e., e.backtrace) rescue Exception raise if PASSTHROUGH_EXCEPTIONS.include? $!.class add_error($!) end end result.add_run yield(FINISHED, name) end |
#setup ⇒ Object
Called before every test method runs. Can be used to set up fixture information.
100 101 |
# File 'lib/test/unit/testcase.rb', line 100 def setup end |
#size ⇒ Object
120 121 122 |
# File 'lib/test/unit/testcase.rb', line 120 def size 1 end |
#teardown ⇒ Object
Called after every test method runs. Can be used to tear down fixture information.
105 106 |
# File 'lib/test/unit/testcase.rb', line 105 def teardown end |
#to_s ⇒ Object
Overridden to return #name.
148 149 150 |
# File 'lib/test/unit/testcase.rb', line 148 def to_s name end |