A collection of tests which can be run
.
Note: It is easy to confuse a TestSuite
instance with something that has a static suite method; I know because I have trouble keeping them straight. Think of something that has a suite method as simply providing a way to get a meaningful TestSuite
instance.
Test
suite that has higher priority is ran prior to test suites that have lower priority.
Creates a new TestSuite
with the given name.
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 33 def initialize(name="Unnamed TestSuite", test_case=nil) @name = name @tests = [] @test_case = test_case @n_tests = 0 @priority = 0 @start_time = nil @elapsed_time = nil @passed = true end
Adds the test to the suite.
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 67 def <<(test) @tests << test self end
It's handy to be able to compare TestSuite
instances.
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 100 def ==(other) return false unless(other.kind_of?(self.class)) return false unless(@name == other.name) @tests == other.tests end
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 72 def delete(test) @tests.delete(test) end
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 76 def delete_tests(tests) @tests -= tests end
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 89 def empty? size.zero? end
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 106 def passed? @passed end
Runs the tests and/or suites contained in this TestSuite
.
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 46 def run(result, &progress_block) @start_time = Time.now yield(STARTED, name) yield(STARTED_OBJECT, self) run_startup(result) while test = @tests.shift @n_tests += test.size run_test(test, result, &progress_block) @passed = false unless test.passed? end ensure begin run_shutdown(result) ensure @elapsed_time = Time.now - @start_time yield(FINISHED, name) yield(FINISHED_OBJECT, self) end end
Retuns the rolled up number of tests in this suite; i.e. if the suite contains other suites, it counts the tests within those suites, not the suites themselves.
# File test-unit-3.3.4/lib/test/unit/testsuite.rb, line 83 def size total_size = @n_tests @tests.each { |test| total_size += test.size } total_size end