Parent

Class/Module Index [+]

Quicksearch

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.

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:

Attributes

method_name[R]

Public Class Methods

description(value, target=nil) click to toggle source

Describes a test.

The following example associates “register a normal user” description with “test_register” test.

description "register a normal user"
def test_register
  ...
end
# File lib/test/unit/testcase.rb, line 251
def description(value, target=nil)
  attribute(:description, value, {}, target || [])
end
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 lib/test/unit/testcase.rb, line 298
def initialize(test_method_name)
  throw :invalid_test unless respond_to?(test_method_name)
  test_method = method(test_method_name)
  throw :invalid_test if test_method.arity > 0
  owner = Util::MethodOwnerFinder.find(self, test_method_name)
  if owner.class != Module and self.class != owner
    throw :invalid_test
  end
  @method_name = test_method_name
  @test_passed = true
  @interrupted = false
end
shutdown() click to toggle source

Called after every test case runs. Can be used to tear down fixture information used in test case scope.

Here is an example test case:

class TestMyClass < Test::Unit::TestCase
  class << self
    def shutdown
      ...
    end
  end

  def teardown
    ...
  end

  def test_my_class1
    ...
  end

  def test_my_class2
    ...
  end
end

Here is a call order:

  • test_my_class1 (or test_my_class2)

  • teardown

  • test_my_class2 (or test_my_class1)

  • teardown

  • shutdown

Note that you should not assume test order. Tests should be worked in any order.

# File lib/test/unit/testcase.rb, line 198
def shutdown
end
startup() click to toggle source

Called before every test case runs. Can be used to set up fixture information used in test case scope.

Here is an example test case:

class TestMyClass < Test::Unit::TestCase
  class << self
    def startup
      ...
    end
  end

  def setup
    ...
  end

  def test_my_class1
    ...
  end

  def test_my_class2
    ...
  end
end

Here is a call order:

  • startup

  • setup

  • test_my_class1 (or test_my_class2)

  • setup

  • test_my_class2 (or test_my_class1)

Note that you should not assume test order. Tests should be worked in any order.

# File lib/test/unit/testcase.rb, line 162
def startup
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 lib/test/unit/testcase.rb, line 113
def suite
  suite = TestSuite.new(name, self)
  collect_test_names.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
test(test_description, &block) click to toggle source

Defines a test in declarative syntax.

The following two test definitions are the same:

description "register user"
def test_register_user
  ...
end

test "register user" do
  ...
end
# File lib/test/unit/testcase.rb, line 234
def test(test_description, &block)
  normalized_description = test_description.gsub(/[^a-zA-Z\d_]+/, '_')
  method_name = "test_#{normalized_description}".to_sym
  define_method(method_name, &block)
  description(test_description, method_name)
end
test_order() click to toggle source

Returns the current test order. This returns :alphabetic by default.

# File lib/test/unit/testcase.rb, line 205
def test_order
  @@test_orders[self] || AVAILABLE_ORDERS.first
end
test_order=(order) click to toggle source

Sets the current test order.

Here are the available order:

:alphabetic

Default. Tests are sorted in alphabetic order.

:random

Tests are sorted in random order.

:defined

Tests are sorted in defined order.

# File lib/test/unit/testcase.rb, line 218
def test_order=(order)
  @@test_orders[self] = order
end

Public Instance Methods

==(other) click to toggle source

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

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

Returns a description for the test. A description will be associated by Test::Unit::TestCase.test or Test::Unit::TestCase.description.

Returns a name for the test for no description test.

# File lib/test/unit/testcase.rb, line 423
def description
  self[:description] || name
end
interrupted?() click to toggle source
# File lib/test/unit/testcase.rb, line 439
def interrupted?
  @interrupted
end
name() click to toggle source

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

# File lib/test/unit/testcase.rb, line 414
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 lib/test/unit/testcase.rb, line 314
def run(result)
  begin
    @_result = result
    yield(STARTED, name)
    begin
      run_setup
      run_test
    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 # For test-spec's after_all :<
  end
end
setup() click to toggle source

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

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

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

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

Overridden to return name.

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

[Validate]

Generated with the Darkfish Rdoc Generator 2.