通讯功能打桩类实现方法

文档序号:7654705阅读:338来源:国知局
专利名称:通讯功能打桩类实现方法
技术领域
本发明涉及单元测试领域,更具体地,涉及一种通讯功能打桩 类实现方法。
背景技术
在目前的软件编程中,对单元测试极为重视。单元测试可以枱r 测软件单元模块是否正确执行了其设计逻辑,以及在各种边界条件 下的反应等。单元测试的回归执行,则可以检测出如果被测试的软 件单元模块进行过修改,那么修改后的新的执行逻辑是否与原来的设计目的相符,从而尽早发现潜在的问题。如图1所示,在网管系统中,会分为客户端部分102,与服务 器端业务逻辑处理部分104。界面程序运4于中,会通过才艮文与"良务 器端104进行通讯,向服务器端104下达命令;并接收服务器端104 返回的包含命令执行结果的报文,经过解析后在界面上呈现出来。因此,在网管界面代码中,会有为数众多的与服务器端进行报 文交互的代码。在单元测试用例扭J亍时,由于并不存在月良务器端环桩。但是,目前各个单元测试代码,对^皮测试代码的与服务器端进 行报文交互的部分功能,分别进行了打桩类编写。这些打桩类是硬编码编写,不具有通用性,不能够被别的单元测试代码所引用,且 硬编码的工作量巨大。因此,需要采用一种新的方式来解决网管界发明内容鉴于上述问题,本发明提供了 一种通讯功能打桩类实现方法, 以便减少此类打桩类编写的工作量,并提供重用性。本发明的通讯功能打桩类实现方法包4舌以下步骤步骤一,在 被测试代码的编写过程中,提供通讯层类,并且编写通讯层类的打 桩类和工具类;步骤二,在单元测试运行环境中,使用打桩类替换 通讯层类;以及步骤三,在单元测试 石马中,调用工具类,将调用 工具类得到的结果输出至打桩类,并根据打桩类的返回结果实现单 元测试。其中,打桩类具有与通讯层类相同的4妻口以及额外的4妾口,工 具类用于读取数据文件并生成报文对象。步驶《三中包4舌以下处理在单元测^(/f、石马中,调用工具类,乂人 而读取数据文件并生成报文对象;以及向打桩类输入报文对象。另外,步骤三中还包括以下处理调用被测试代码,并且被测 试代码通过打桩类发送报文;打桩类返回报文对象;以及根据报文 与报文对象的内容的不同,实现单元测试。在净皮测试代码的编写过程中,使用同一通讯层类来进行才艮文交互。
因而,通过本发明的通ifL功能打4庄类实J见方法,可以减少打才庄 类编写的工作量,并且提供重用性。解决了网管界面单元测试与月良 务器进行交互的打桩类编写问题。
采用本发明所述方法,与现有技术相比,由于每个模块的单元 测试代码都不必编写自己的通讯层打才庄类,而只需4是供凄t据文件即 可,并且H据文件4艮多可以重用已有的文件,因此4吏得单元测试的 编码量大大减少,节省了单元测试成本,提供了工作效率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部 分地从说明书中变得显而易见,或者通过实施本发明而了解。本发 明的目的和其他优点可通过在所写的说明书、权利要求书、以及附 图中所特别指出的结构来实现和获得。


附图用来提供对本发明的进一步理解,并且构成说明书的一部 分,与本发明的实施例一起用于解释本发明,并不构成对本发明的 限制。在附图中图1是现有技术中网管系统的结构框图;图2是根据本发明的通讯功能打桩类实现方法的流程图;以及图3是本发明中所4吏用的单元测试通讯层打桩类才莫拟服务器通 i凡的示意图。
具体实施方式
以下结合附图对本发明的优选实施例进行说明,应当理解,此 处所描述的优选实施例仅用于说明和解释本发明,并不用于限定本 发明。图2是根据本发明的通讯功能打桩类实现方法的流程图,以及 图3是本发明中所使用的单元测试通讯层打桩类模拟服务器通讯的 示意图。以下将参考图3来详细描述图2的过程。首先,参考图3,在单元测试时,主要由以下几个部分组成 单元测试代码302、数据文件解析类304、数据文件306、通讯层打 桩类308、和被观'J试代码310。接下来,如图2所示,本发明的通讯功能打才庄类实现方法包括「 以下步骤步骤S202,在被测试代码310的编写过程中,提供通讯层类, 并且编写通讯层类的打4庄类308和工具类(即^t据文件解析类)304;步骤S204,在单元测试运行环境中,使用打桩类308替换通讯 层类;以及步骤S206,在单元测试代码302中,调用工具类304,将调用 工具类304得到的结果输出至打桩类308,并4艮据打桩类308的返 回结果实3见单元测^式。在步骤S202中,在网管界面被测试代码310的编写过程中, 遵循使用同一个通讯层类与服务器端进行报文交互的原则,以便将 来单元测试打4庄时,4十对。眷一的一个入口进4于处理。
其中,该打桩类308具有与真正通讯层类一样的对外接口 , 4旦 是还提供了额外的接口 ,以便单元测试代码302在测试-波测试代码 310之前向通过额外的接口向此打桩类308输入^莫拟的服务器端返 回报文。真正的通讯层类中具有如下函数,用于向服务器端发送报文, 并获得执行结果报文Message sendMessage(Message msg);此函数的参数为Message类型,表示一个报文,返回结果也为 Message类型,表示从服务器端返回的,包含服务器端对收到的报 文中包含的命令的执行结果信息。由于在单元测试环境中,没有月良务器端环境,所以,通讯层打 桩类308应该能够才莫拟服务器端的返回结果。则在通讯层打桩类308 中,除了拥有真正通ifl层类中的Message sendMessage(Message msg) 函数外,还应该具有一个辅助函数,以便外部代码(单元测试代码 302 )预先把sendMessage函数的返回结果设置好。此辅助函数定义 如下public static void sendMessageHelper(Message rtnMsg) { results .add(rtnMsg);其中,results为类型为List的成员变量,此函数把单元测试代 码302传递进来的将要用来模拟服务器端返回结果报文的对象存放 至ij卩人歹'results中。在通ifl层打冲庄类308中,sendMessage函凄t定义3口下public Message sendMessage(Message msg) { Message result = (Message) results.get(O) results.remove(O); return result;另外,工具类304可以通过读取一个数据文件306,来生成报 文对象。该对象由测试代码输入到通讯层打才庄类308中。这里^是到 的数据文件306,应该采用已经被广泛接收的格式,以便最大程度 地具有通用性,和利用已有的数据文件生成工具。在步-骤S204中,例如,l吏用打冲庄类308 ^齐4吳通ifl层类的方式 包括在classpath环境变量设置中,从指向真正的通讯层类所在的 文件,改为指向通讯层打4庄类所在的文件。步骤S206中包括以下处理在单元测试^码302中,调用工 具类304,从而读取lt据文件306并生成才艮文对象;以及向打桩类 308输入才艮文对象。具体实例如下,在单元测试代码302中,先调用数据文件解析 类304,解析数据文件306,得到一个类型为Message的,包含^f莫拟 从服务器端返回的执行结果信息的报文对象(例如,使用临时变量 returnMessage来4呆存对此对象的引用)。调用通讯层打桩类308的sendMessageHelper函凄t,将此才莫拟 返回结果的报文加入到通讯层打桩类308的返回结果报文队列中, ,!^殳通i凡层^T才庄类308的类名为JunitCommunicationService,则i周 用^下JunitCommunicationService. sendMessageHelper(returnMessage);另外,步骤S206中还包括以下处理调用被测试代码,并且 被测试代码通过打桩类发送报文;打桩类返回报文对象;以及根据 报文与报文对象的内容的不同,实现单元测试。具体过程为在单元测试代码中调用被测试代码,测试代码内 部在运行到向服务器端发送报文的语句时,由于通讯层类已经被替 换,则实际上调用的是通讯层打桩类,所以纟皮测试代码在调用了通 讯层打桩类的向服务器端发送报文的函数后,通讯层打桩类将之前后,被测试类根据通讯层打桩类返回的报文的内容的不同,而走向 不同的分支,乂人而达到单元测i式目的。例如,在单元测试代码中,使用临时变量modulel来引用被测 试类实例;modulel中包含一个function 1函凄t,正是目前单元测试 代码中将要测试的函数。functionl函数内部会向服务器端发送报文, 并解析"良务器端的返回结果才艮文。此时,可以在单元测试代码302 中调用该^皮测i式函凄t:modulel. functionl0;调用完毕后,对modulel内部成员变量的值(假设,modulel 有个成员变量memberVariablel )进行验证,4佥查其是否与预期值相 付assertEquals(期望值,module 1 .member Variable 1);到此为止,4f对一皮测试类的functionl方法的一个单元测试用例 完成。4旦是应了解,上述实例仅是本发明的一个示例,并不会限制 本发明的保护范围。
其中,通讯层打桩类和数据文件解析类只需编写一次,以后在 每次单元测试代码编写中,都可以4吏用这两个类。
另外,上述数据文件的格式,应该是网管界面与服务器端都公 用的格式。即通过解析此文件,网管界面与服务器端都可以得到报 文对象,则此文件就不仅仅可以在网管界面多个才莫块的单元测试中 得到重用,还可以在服务器端多个模块的单元测试中得到重用。
综上所述,采用本发明的方法,只需提供数据文件,并且数据 文件很多可以重用已有的文件,因此使得单元测试的编码量大大减 少,节省了单元测试成本,提供了工作效率。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对 于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本 发明的精神和原则之内,所作的任何修改、等同替换、改进等,均 应包含在本发明的保护范围之内。
权利要求
1. 一种通讯功能打才庄类实现方法,其特征在于,包括以下步艰《步骤一,在被测试代码的编写过程中,提供通讯层类,并 且编写所述通讯层类的打一庄类和工具类;步骤二,在单元测试运4亍环境中,4吏用所述打4庄类4#换所 述通ifL层类;以及步骤三,在单元测试^码中,调用所述工具类,将调用所 述工具类得到的结果输出至所述打桩类,并根据所述打桩类的 返回结果实现单元测试。
2. 根据权利要求1所述的方法,其特征在于,所述打桩类具有与 所述通讯层类相同的接口以及额外的4妄口 。
3. 根据权利要求1所述的方法,其特征在于,所述工具类用于读 耳又凄t据文件并生成纟艮文对象。
4. 根据权利要求1所述的方法,其特征在于,所述步骤三中包括 以下处J里在所述单元测试代码中,调用所述工具类,从而读取所述 凄t据文件并生成所述净艮文对象;以及向所述打桩类输入所述^艮文对象。
5. 根据权利要求4所述的方法,其特征在于,所述步骤三中还包 4舌以下处理调用被测试代码,并且所述被测试代码通过所述打桩类发 送报文;所述打冲庄类返回所述才艮文对象;以及 根据所述报文与所述报文对象的内容的不同,实现单元测试。
6. 根据权利要求1所述的方法,其特征在于,在所述被测试代码 的编写过程中,4吏用同一通讯层类来进4亍才艮文交互。
全文摘要
本发明提供了一种通讯功能打桩类实现方法,其包括以下步骤步骤一,在被测试代码的编写过程中,提供通讯层类,并且编写通讯层类的打桩类和工具类;步骤二,在单元测试运行环境中,使用打桩类替换通讯层类;以及步骤三,在单元测试代码中,调用工具类,将调用工具类得到的结果输出至打桩类,并根据打桩类的返回结果实现单元测试。因而,通过本发明,使得单元测试的编码量大大减少,节省了单元测试成本,提供了工作效率。
文档编号H04L12/24GK101145954SQ20071011146
公开日2008年3月19日 申请日期2007年6月20日 优先权日2007年6月20日
发明者石 焦 申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1