專利名稱:通訊功能打樁類實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及單元測試領(lǐng)域,更具體地,涉及一種通訊功能打樁 類實現(xiàn)方法。
背景技術(shù):
在目前的軟件編程中,對單元測試極為重視。單元測試可以枱r 測軟件單元模塊是否正確執(zhí)行了其設(shè)計邏輯,以及在各種邊界條件 下的反應(yīng)等。單元測試的回歸執(zhí)行,則可以檢測出如果被測試的軟 件單元模塊進行過修改,那么修改后的新的執(zhí)行邏輯是否與原來的設(shè)計目的相符,從而盡早發(fā)現(xiàn)潛在的問題。如圖1所示,在網(wǎng)管系統(tǒng)中,會分為客戶端部分102,與服務(wù) 器端業(yè)務(wù)邏輯處理部分104。界面程序運4于中,會通過才艮文與"良務(wù) 器端104進行通訊,向服務(wù)器端104下達命令;并接收服務(wù)器端104 返回的包含命令執(zhí)行結(jié)果的報文,經(jīng)過解析后在界面上呈現(xiàn)出來。因此,在網(wǎng)管界面代碼中,會有為數(shù)眾多的與服務(wù)器端進行報 文交互的代碼。在單元測試用例扭J亍時,由于并不存在月良務(wù)器端環(huán)樁。但是,目前各個單元測試代碼,對^皮測試代碼的與服務(wù)器端進 行報文交互的部分功能,分別進行了打樁類編寫。這些打樁類是硬編碼編寫,不具有通用性,不能夠被別的單元測試代碼所引用,且 硬編碼的工作量巨大。因此,需要采用一種新的方式來解決網(wǎng)管界發(fā)明內(nèi)容鑒于上述問題,本發(fā)明提供了 一種通訊功能打樁類實現(xiàn)方法, 以便減少此類打樁類編寫的工作量,并提供重用性。本發(fā)明的通訊功能打樁類實現(xiàn)方法包4舌以下步驟步驟一,在 被測試代碼的編寫過程中,提供通訊層類,并且編寫通訊層類的打 樁類和工具類;步驟二,在單元測試運行環(huán)境中,使用打樁類替換 通訊層類;以及步驟三,在單元測試 石馬中,調(diào)用工具類,將調(diào)用 工具類得到的結(jié)果輸出至打樁類,并根據(jù)打樁類的返回結(jié)果實現(xiàn)單 元測試。其中,打樁類具有與通訊層類相同的4妻口以及額外的4妾口,工 具類用于讀取數(shù)據(jù)文件并生成報文對象。步駛《三中包4舌以下處理在單元測^(/f、石馬中,調(diào)用工具類,乂人 而讀取數(shù)據(jù)文件并生成報文對象;以及向打樁類輸入報文對象。另外,步驟三中還包括以下處理調(diào)用被測試代碼,并且被測 試代碼通過打樁類發(fā)送報文;打樁類返回報文對象;以及根據(jù)報文 與報文對象的內(nèi)容的不同,實現(xiàn)單元測試。在凈皮測試代碼的編寫過程中,使用同一通訊層類來進行才艮文交互。
因而,通過本發(fā)明的通ifL功能打4莊類實J見方法,可以減少打才莊 類編寫的工作量,并且提供重用性。解決了網(wǎng)管界面單元測試與月良 務(wù)器進行交互的打樁類編寫問題。
采用本發(fā)明所述方法,與現(xiàn)有技術(shù)相比,由于每個模塊的單元 測試代碼都不必編寫自己的通訊層打才莊類,而只需4是供凄t據(jù)文件即 可,并且H據(jù)文件4艮多可以重用已有的文件,因此4吏得單元測試的 編碼量大大減少,節(jié)省了單元測試成本,提供了工作效率。
本發(fā)明的其它特征和優(yōu)點將在隨后的說明書中闡述,并且,部 分地從說明書中變得顯而易見,或者通過實施本發(fā)明而了解。本發(fā) 明的目的和其他優(yōu)點可通過在所寫的說明書、權(quán)利要求書、以及附 圖中所特別指出的結(jié)構(gòu)來實現(xiàn)和獲得。
附圖用來提供對本發(fā)明的進一步理解,并且構(gòu)成說明書的一部 分,與本發(fā)明的實施例一起用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的 限制。在附圖中圖1是現(xiàn)有技術(shù)中網(wǎng)管系統(tǒng)的結(jié)構(gòu)框圖;圖2是根據(jù)本發(fā)明的通訊功能打樁類實現(xiàn)方法的流程圖;以及圖3是本發(fā)明中所4吏用的單元測試通訊層打樁類才莫擬服務(wù)器通 i凡的示意圖。
具體實施方式
以下結(jié)合附圖對本發(fā)明的優(yōu)選實施例進行說明,應(yīng)當理解,此 處所描述的優(yōu)選實施例僅用于說明和解釋本發(fā)明,并不用于限定本 發(fā)明。圖2是根據(jù)本發(fā)明的通訊功能打樁類實現(xiàn)方法的流程圖,以及 圖3是本發(fā)明中所使用的單元測試通訊層打樁類模擬服務(wù)器通訊的 示意圖。以下將參考圖3來詳細描述圖2的過程。首先,參考圖3,在單元測試時,主要由以下幾個部分組成 單元測試代碼302、數(shù)據(jù)文件解析類304、數(shù)據(jù)文件306、通訊層打 樁類308、和被觀'J試代碼310。接下來,如圖2所示,本發(fā)明的通訊功能打才莊類實現(xiàn)方法包括「 以下步驟步驟S202,在被測試代碼310的編寫過程中,提供通訊層類, 并且編寫通訊層類的打4莊類308和工具類(即^t據(jù)文件解析類)304;步驟S204,在單元測試運行環(huán)境中,使用打樁類308替換通訊 層類;以及步驟S206,在單元測試代碼302中,調(diào)用工具類304,將調(diào)用 工具類304得到的結(jié)果輸出至打樁類308,并4艮據(jù)打樁類308的返 回結(jié)果實3見單元測^式。在步驟S202中,在網(wǎng)管界面被測試代碼310的編寫過程中, 遵循使用同一個通訊層類與服務(wù)器端進行報文交互的原則,以便將 來單元測試打4莊時,4十對。眷一的一個入口進4于處理。
其中,該打樁類308具有與真正通訊層類一樣的對外接口 , 4旦 是還提供了額外的接口 ,以便單元測試代碼302在測試-波測試代碼 310之前向通過額外的接口向此打樁類308輸入^莫擬的服務(wù)器端返 回報文。真正的通訊層類中具有如下函數(shù),用于向服務(wù)器端發(fā)送報文, 并獲得執(zhí)行結(jié)果報文Message sendMessage(Message msg);此函數(shù)的參數(shù)為Message類型,表示一個報文,返回結(jié)果也為 Message類型,表示從服務(wù)器端返回的,包含服務(wù)器端對收到的報 文中包含的命令的執(zhí)行結(jié)果信息。由于在單元測試環(huán)境中,沒有月良務(wù)器端環(huán)境,所以,通訊層打 樁類308應(yīng)該能夠才莫擬服務(wù)器端的返回結(jié)果。則在通訊層打樁類308 中,除了擁有真正通ifl層類中的Message sendMessage(Message msg) 函數(shù)外,還應(yīng)該具有一個輔助函數(shù),以便外部代碼(單元測試代碼 302 )預(yù)先把sendMessage函數(shù)的返回結(jié)果設(shè)置好。此輔助函數(shù)定義 如下public static void sendMessageHelper(Message rtnMsg) { results .add(rtnMsg);其中,results為類型為List的成員變量,此函數(shù)把單元測試代 碼302傳遞進來的將要用來模擬服務(wù)器端返回結(jié)果報文的對象存放 至ij卩人歹'results中。在通ifl層打沖莊類308中,sendMessage函凄t定義3口下public Message sendMessage(Message msg) { Message result = (Message) results.get(O) results.remove(O); return result;另外,工具類304可以通過讀取一個數(shù)據(jù)文件306,來生成報 文對象。該對象由測試代碼輸入到通訊層打才莊類308中。這里^是到 的數(shù)據(jù)文件306,應(yīng)該采用已經(jīng)被廣泛接收的格式,以便最大程度 地具有通用性,和利用已有的數(shù)據(jù)文件生成工具。在步-驟S204中,例如,l吏用打沖莊類308 ^齊4吳通ifl層類的方式 包括在classpath環(huán)境變量設(shè)置中,從指向真正的通訊層類所在的 文件,改為指向通訊層打4莊類所在的文件。步驟S206中包括以下處理在單元測試^碼302中,調(diào)用工 具類304,從而讀取lt據(jù)文件306并生成才艮文對象;以及向打樁類 308輸入才艮文對象。具體實例如下,在單元測試代碼302中,先調(diào)用數(shù)據(jù)文件解析 類304,解析數(shù)據(jù)文件306,得到一個類型為Message的,包含^f莫擬 從服務(wù)器端返回的執(zhí)行結(jié)果信息的報文對象(例如,使用臨時變量 returnMessage來4呆存對此對象的引用)。調(diào)用通訊層打樁類308的sendMessageHelper函凄t,將此才莫擬 返回結(jié)果的報文加入到通訊層打樁類308的返回結(jié)果報文隊列中, ,!^殳通i凡層^T才莊類308的類名為JunitCommunicationService,則i周 用^下JunitCommunicationService. sendMessageHelper(returnMessage);另外,步驟S206中還包括以下處理調(diào)用被測試代碼,并且 被測試代碼通過打樁類發(fā)送報文;打樁類返回報文對象;以及根據(jù) 報文與報文對象的內(nèi)容的不同,實現(xiàn)單元測試。具體過程為在單元測試代碼中調(diào)用被測試代碼,測試代碼內(nèi) 部在運行到向服務(wù)器端發(fā)送報文的語句時,由于通訊層類已經(jīng)被替 換,則實際上調(diào)用的是通訊層打樁類,所以纟皮測試代碼在調(diào)用了通 訊層打樁類的向服務(wù)器端發(fā)送報文的函數(shù)后,通訊層打樁類將之前后,被測試類根據(jù)通訊層打樁類返回的報文的內(nèi)容的不同,而走向 不同的分支,乂人而達到單元測i式目的。例如,在單元測試代碼中,使用臨時變量modulel來引用被測 試類實例;modulel中包含一個function 1函凄t,正是目前單元測試 代碼中將要測試的函數(shù)。functionl函數(shù)內(nèi)部會向服務(wù)器端發(fā)送報文, 并解析"良務(wù)器端的返回結(jié)果才艮文。此時,可以在單元測試代碼302 中調(diào)用該^皮測i式函凄t:modulel. functionl0;調(diào)用完畢后,對modulel內(nèi)部成員變量的值(假設(shè),modulel 有個成員變量memberVariablel )進行驗證,4僉查其是否與預(yù)期值相 付assertEquals(期望值,module 1 .member Variable 1);到此為止,4f對一皮測試類的functionl方法的一個單元測試用例 完成。4旦是應(yīng)了解,上述實例僅是本發(fā)明的一個示例,并不會限制 本發(fā)明的保護范圍。
其中,通訊層打樁類和數(shù)據(jù)文件解析類只需編寫一次,以后在 每次單元測試代碼編寫中,都可以4吏用這兩個類。
另外,上述數(shù)據(jù)文件的格式,應(yīng)該是網(wǎng)管界面與服務(wù)器端都公 用的格式。即通過解析此文件,網(wǎng)管界面與服務(wù)器端都可以得到報 文對象,則此文件就不僅僅可以在網(wǎng)管界面多個才莫塊的單元測試中 得到重用,還可以在服務(wù)器端多個模塊的單元測試中得到重用。
綜上所述,采用本發(fā)明的方法,只需提供數(shù)據(jù)文件,并且數(shù)據(jù) 文件很多可以重用已有的文件,因此使得單元測試的編碼量大大減 少,節(jié)省了單元測試成本,提供了工作效率。
以上僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對 于本領(lǐng)域的技術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本 發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等,均 應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1. 一種通訊功能打才莊類實現(xiàn)方法,其特征在于,包括以下步艱《步驟一,在被測試代碼的編寫過程中,提供通訊層類,并 且編寫所述通訊層類的打一莊類和工具類;步驟二,在單元測試運4亍環(huán)境中,4吏用所述打4莊類4#換所 述通ifL層類;以及步驟三,在單元測試^碼中,調(diào)用所述工具類,將調(diào)用所 述工具類得到的結(jié)果輸出至所述打樁類,并根據(jù)所述打樁類的 返回結(jié)果實現(xiàn)單元測試。
2. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述打樁類具有與 所述通訊層類相同的接口以及額外的4妄口 。
3. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述工具類用于讀 耳又凄t據(jù)文件并生成纟艮文對象。
4. 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟三中包括 以下處J里在所述單元測試代碼中,調(diào)用所述工具類,從而讀取所述 凄t據(jù)文件并生成所述凈艮文對象;以及向所述打樁類輸入所述^艮文對象。
5. 根據(jù)權(quán)利要求4所述的方法,其特征在于,所述步驟三中還包 4舌以下處理調(diào)用被測試代碼,并且所述被測試代碼通過所述打樁類發(fā) 送報文;所述打沖莊類返回所述才艮文對象;以及 根據(jù)所述報文與所述報文對象的內(nèi)容的不同,實現(xiàn)單元測試。
6. 根據(jù)權(quán)利要求1所述的方法,其特征在于,在所述被測試代碼 的編寫過程中,4吏用同一通訊層類來進4亍才艮文交互。
全文摘要
本發(fā)明提供了一種通訊功能打樁類實現(xiàn)方法,其包括以下步驟步驟一,在被測試代碼的編寫過程中,提供通訊層類,并且編寫通訊層類的打樁類和工具類;步驟二,在單元測試運行環(huán)境中,使用打樁類替換通訊層類;以及步驟三,在單元測試代碼中,調(diào)用工具類,將調(diào)用工具類得到的結(jié)果輸出至打樁類,并根據(jù)打樁類的返回結(jié)果實現(xiàn)單元測試。因而,通過本發(fā)明,使得單元測試的編碼量大大減少,節(jié)省了單元測試成本,提供了工作效率。
文檔編號H04L12/24GK101145954SQ20071011146
公開日2008年3月19日 申請日期2007年6月20日 優(yōu)先權(quán)日2007年6月20日
發(fā)明者石 焦 申請人:中興通訊股份有限公司