Ruby中单元测试(Unit Test)方法

  • 格式:pdf
  • 大小:99.96 KB
  • 文档页数:3

下载文档原格式

  / 3
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Ruby中单元测试(Unit Test)方法

Ruby中也提供了单元测试的框架,类似Java中的JUnit,此框架在Ruby中被成为mini test。

我们先看一个例子,这个是我的源代码:

[code lang=”ruby”]

require ‘json’

module PMU_INTERFACE

class IUserLoginReq

def initialize(command_id=nil, user_name=nil, user_password=nil, auth_code=nil, token=nil)

@command_id = command_id

@user_name = user_name

@user_password = user_password

@auth_code = auth_code

@token = token

end

def to_json(*a)

{

"json_class" => self.class,

"data" => self.to_json_hash

}.to_json(*a)

end

def to_json_hash

{:command_id => @command_id, :user_name => @user_name, :user_password =>

@user_password, :auth_code => @auth_code, :token => @token}

end

def self.json_create(json_str)

data = json_str["data"]

new(data["command_id"], data["user_name"], data["user_password"], data["auth_code"], data["token"])

end

attr_accessor :command_id, :user_name, :user_password, :auth_code

end

class IUserLoginResp

def initialize(result=nil, user_name=nil, user_password = nil)

#the login result

@result = result

#the token holding by client

@user_name = user_name

@user_password = user_password

end

def to_json(*a)

{

"json_class" => self.class,

"data" => {:result => @result, :user_name => @user_name, :user_password =>

@user_password}

}.to_json(*a)

end

def self.json_create(json_str)

data = json_str["data"]

new(data["result"], data["user_name"], data["user_password"])

end

attr_accessor :result, :user_password, :user_name

end

end

[/code]

给上面的源代码写测试代码:

[code lang=”ruby”]

require ‘test/unit’

require ‘json’

require_relative ‘../../../source/server/service/pmu_interface/app_interface’

class TestInterface < Test::Unit::TestCase

def test_user_login_req

req = PMU_INTERFACE::IUserLoginReq.new(1, ‘a@b ’, ‘aa’, ‘1234’ , ”)

str = req.to_json

req2 = JSON.parse(str)

assert(str != nil && req2 mand_id == req mand_id)

end

def test_user_login_resp

req = PMU_INTERFACE::IUserLoginResp.new(1, ‘1234’, ‘1234’)

str = req.to_json

req2 = JSON.parse(str)

assert(str != nil && req2.result == req.result)

end

end

[/code]

我们可以看到,测试类继承了Test::Unit::TestCase类,这个类在test/unit库中,test/unit库是Ruby 的系统库,成为mini test。

每个测试方法都是以test开头,这点也与JUnit的规则一致,然后assert也是一致,所以如果你熟悉JUnit,那么做Ruby代码的单元测试就不用学习可以直接写。

还有一点,我们都知道JUnit提供了TestSuite这个类,可以将很多TestCase汇总到一块执行,这个对于持续集成非常有用,因为持续集成需要执行所有的TestCase并输入报告。

要在Ruby中执行TestSuite不是那么简单,因为Ruby内置的库里面没有包含TestSuite,需要额外安装一个第三方的gem(test-unit):

[code lang=”ruby”]

sudo gem install test-unit

[/code]