Programming Ruby 2nd 读书笔记5

C12 Unit Test

目录结构如下

 

lib/

    person.rb

test/

    tc_person.rb

 

#person.rb
class OldAgeException < StandardError

  def initialize(info)
    super(info)
  end

end


class Person
  attr_reader :name, :age, :gender
  attr_writer :name, :age, :gender
  def initialize(name, age, gender)
    @name = name
    @age = age
    @gender = gender
  end
  def to_s
    "[Person Name: #@name -- Age: #@age -- Gender: #@gender]"
  end
  def male?
    @gender == 'Male' || @gender == 'male'
  end
  def old?
    @age > 80
  end
  def climb
    if old?
      raise OldAgeException.new("The age #@age is too old!!!")
    end
    "#{self} climbs"
  end
end

 

 

#tc_person.rb
$:.unshift File.join(File.dirname(__FILE__), "..", "lib")
require 'test/unit'
require 'person'

class TestPerson < Test::Unit::TestCase

  def test_init
    p = Person.new('AnkyHe', 27, 'Male')
    assert_equal('AnkyHe', p.name)
    assert_equal(27, p.age)
    assert_equal('Male', p.gender)
  end

  def test_to_s
    p = Person.new('AnkyHe', 27, 'Male')
    assert_equal('[Person Name: AnkyHe -- Age: 27 -- Gender: Male]', p.to_s)
  end

  def test_male
    p = Person.new('AnkyHe', 27, 'Male')
    assert(p.male?)
    p = Person.new('Xiaoli', 27, 'Female')
    assert(!p.male?)
  end

  def test_old
    p = Person.new('AnkyHe', 27, 'Male')
    assert(!p.old?)
    p = Person.new('Laoren', 81, 'Female')
    assert(p.old?)
  end

  def test_climb
    p = Person.new('AnkyHe', 27, 'Male')
    assert_nothing_raised(){p.climb}
    assert_equal('[Person Name: AnkyHe -- Age: 27 -- Gender: Male] climbs', p.climb)
    p = Person.new('Laoren', 81, 'Female')
    assert_raise(OldAgeException){p.climb}
  end


end


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值