Test::Unit::TestCase (Class)

In: test/unit/testcase.rb
Parent: 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.

Methods

==   default_test   name   new   run   setup   size   suite   teardown   to_s  

Constants

STARTED = name + "::STARTED"
FINISHED = name + "::FINISHED"

Attributes

method_name  [R] 

Included Modules

Public Class methods

Creates a new instance of the fixture for running the test represented by test_method_name.

[Source]

# File test/unit/testcase.rb, line 31
      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

Rolls up all of the test* methods in the fixture into one suite, creating a new instance of the fixture for each method.

[Source]

# File test/unit/testcase.rb, line 44
      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

It’s handy to be able to compare TestCase instances.

[Source]

# File test/unit/testcase.rb, line 143
      def ==(other)
        return false unless(other.kind_of?(self.class))
        return false unless(@method_name == other.method_name)
        self.class == other.class
      end

[Source]

# File test/unit/testcase.rb, line 98
      def default_test
        flunk("No tests were specified")
      end

Returns a human-readable name for the specific test that this instance of TestCase represents.

[Source]

# File test/unit/testcase.rb, line 133
      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.

[Source]

# File test/unit/testcase.rb, line 65
      def run(result)
        yield(STARTED, name)
        @_result = result
        begin
          setup
          __send__(@method_name)
        rescue AssertionFailedError => e
          add_failure(e.message, e.backtrace)
        rescue StandardError, ScriptError
          add_error($!)
        ensure
          begin
            teardown
          rescue AssertionFailedError => e
            add_failure(e.message, e.backtrace)
          rescue StandardError, ScriptError
            add_error($!)
          end
        end
        result.add_run
        yield(FINISHED, name)
      end

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

[Source]

# File test/unit/testcase.rb, line 90
      def setup
      end

[Source]

# File test/unit/testcase.rb, line 110
      def size
        1
      end

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

[Source]

# File test/unit/testcase.rb, line 95
      def teardown
      end

Overridden to return name.

[Source]

# File test/unit/testcase.rb, line 138
      def to_s
        name
      end

[Validate]