In Files

  • test/unit/testcase.rb
  • test/unit/ui/console/testrunner.rb
  • test/unit/ui/fox/testrunner.rb
  • test/unit/ui/gtk/testrunner.rb
  • test/unit/ui/gtk2/testrunner.rb
  • test/unit/ui/tk/testrunner.rb

Test::Unit::TestCase

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.

Constants

FINISHED
PASSTHROUGH_EXCEPTIONS

These exceptions are not caught by run.

STARTED

Attributes

method_name[R]

Public Class Methods

new(test_method_name) click to toggle source

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
            
suite() click to toggle source

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
            

Public Instance Methods

==(other) click to toggle source

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
            
default_test() click to toggle source
 
               # File test/unit/testcase.rb, line 108
def default_test
  flunk("No tests were specified")
end
            
name() click to toggle source

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
            
run(result) click to toggle source

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
            
setup() click to toggle source

Called before every test method runs. Can be used to set up fixture information.

 
               # File test/unit/testcase.rb, line 100
def setup
end
            
size() click to toggle source
 
               # File test/unit/testcase.rb, line 120
def size
  1
end
            
teardown() click to toggle source

Called after every test method runs. Can be used to tear down fixture information.

 
               # File test/unit/testcase.rb, line 105
def teardown
end
            
to_s() click to toggle source

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 visit Documenting-ruby.org.

blog comments powered by Disqus