个Employee类的实例。列表1.Employee类 > class Employee
def initialize(name, salary, hire_year)
@name = name
@salary = salary
@hire_year = hire_year
end
attr_reader :name, :salary, :hire_year
def raise_salary_by(perc)
@salary += (@salary * (perc * 0.01))
end
def to_s
"Name is #{@name}, salary is #{@salary}, " + "hire year is #{@hire_year}"
end
end
相应的单元测试如下:
列表2.相应于Employee类的单元测试
require 'test/unit/testcase'
require 'test/unit/autorunner'
require 'hr'
class TestEmployee < Test::Unit::TestCase
@@Test_Salary = 2500
def setup
@emp = Employee.new("Homer", @@Test_Salary, 2003)
end
def test_raise_salary
@emp.raise_salary_by(10)
eXPected = (@@Test_Salary * 0.10) + @@Test_Salary
assert( expected == @emp.salary)
end
end
为了运行这个单元测试,你可以为该单元测试类创建一个Run配置-作为一个Test::Unit类型,见图12。
图
12.RDT包括一个Test::Unit Run配置
当你运行这个测试时,你会得到与Java单元测试相同的支持元素,包括在左下角的类JUnit格 子。
图
13.运行于IDE中的一个单元测试的例子
你还可以在Ruby中创建TestSuites。TestSuites是Ruby类,它定义一个返回TestSuite的suite方 法。这个TestSuite由自动地在每个TestCases中定义的suite组成。列表3是针对几个类的一个示 例TestSuite。 列表3.一些类的示例TestSuite require 'test/unit/testsuite' require 'test/unit/ui/tk/testrunner' require 'test/unit/ui/console/testrunner' require 'TestEmployee' require 'TestManager' class TestSuite_AllTests def self.suite
suite
= Test::Unit::TestSuite.new("HR Tests")
suite << TestEmployee.suite
suite << TestManager.suite
return suite
end
end
#Test::Unit::UI::Tk::TestRunner.run(TestSuite_AllTests)
Test::Unit::UI::Consol