Test case setup : Unit Testing « Unit Test « Ruby






Test case setup


require 'test/unit'

class Person
  attr_accessor :first_name, :last_name, :age

  def initialize(first_name, last_name, age)
    raise ArgumentError, "Invalid age: #{age}" unless age > 0
    @first_name, @last_name, @age = first_name, last_name, age
  end

  def full_name
    first_name + ' ' + last_name
  end
end


class PersonTest < Test::Unit::TestCase
  FIRST_NAME, LAST_NAME, AGE = 'J', 'Y', 25

  def setup
    @person = Person.new(FIRST_NAME, LAST_NAME, AGE)
  end

  def test_first_name
    assert_equal FIRST_NAME, @person.first_name
  end

  def test_last_name
    assert_equal LAST_NAME,  @person.last_name
  end

  def test_full_name
    assert_equal FIRST_NAME + ' ' + LAST_NAME, @person.full_name
  end

  def test_age
    assert_equal 25, @person.age
    assert_raise(ArgumentError) { Person.new(FIRST_NAME, LAST_NAME, -4) }
    assert_raise(ArgumentError) { Person.new(FIRST_NAME, LAST_NAME, 'four') }
  end
end

def test_first_name
  assert(FIRST_NAME == @person.first_name)
end

def assert_equal(expected, actual)
  assert(expected == actual)
end

# $ ruby test/person_test.rb

 








Related examples in the same category

1.The Philosophy of Test-Driven Development
2.Unit Testing: assert_equal
3.Writing Unit Tests
4.Unit Testing: hard code value
5.Test the values in an array
6.Assert exception raised
7.Structuring Tests
8.Varying the Algorithm with the Template Method
9.A test case for collection class