亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源單元測試工具 >
利用Eclipse進行單元測試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時間:[ 2013/2/19 15:20:35 ] 推薦標簽:

第二,模擬 Collaborator 類的方式已經(jīng)更改。使用 jMock CGLIB 庫可以模擬具體類實現(xiàn)。提供給 jMock CGLIB 的 mock() 方法的附加 String 參數(shù)被用作創(chuàng)建的模擬對象的標識符。使用 jMock(當然,還有 RMock)時,在單一測試用例內(nèi)每個模擬對象設(shè)置都要求有惟一標識符。這對于在公共的 setUp() 方法中或在實際測試方法內(nèi)定義的模擬對象來說是正確的。

第三,測試方法的原始期望并未更改。仍然要求有 false 證明才能使測試通過。這是十分重要的,因為通過展示使用的測試框架足夠靈活、可以適應(yīng)各種輸入帶來的更改、同時仍然允許獲得不變的測試結(jié)果,使它們在無法調(diào)節(jié)輸入生成同樣的結(jié)果時展示了其實際限制。

現(xiàn)在,重新運行作為 JUnit 測試的測試。測試將通過,如下所示:

圖 4. 場景 2 測試通過

在下一個場景中,情況會變得略微復(fù)雜一些。您將使用 RMock 框架來相對緩解一下這種困難的情形。

場景 3:使用 jMock 和 RMock 模擬帶有非默認構(gòu)造函數(shù)的具體類

首先像以前一樣嘗試使用 jMock 來模擬 Collaborator 對象 —— 只是這一次,Collaborator 沒有默認的無參數(shù)構(gòu)造函數(shù)。注,保留布爾 false 結(jié)果的測試期望。

同時假定 Collaborator 對象要求使用字符串和原始的 int 作為傳遞給構(gòu)造函數(shù)的參數(shù)。清單 6 顯示了對 Collaborator 對象所做的更改。

清單 6. 經(jīng)過編輯的場景 3 的 Collaborator 類

               
public class Collaborator{
   private String collaboratorString;
   private int collaboratorInt;
 
   public Collaborator(String string, int number){
     collaboratorString = string;
     collaboratorInt = number;
   }
   public String executeJob(){
     return "success";
  }
}


Collaborator 類構(gòu)造函數(shù)仍然十分簡單。用傳入?yún)?shù)設(shè)定類字段。這里不必使用任何其他邏輯,并且其 executeJob() 函數(shù)保持不變。

重新運行測試,并且示例的所有其他組件保持不變。結(jié)果是災(zāi)難性的測試失敗,如下所示:

圖 5. 場景 3 測試失敗

以上測試是作為簡單的 JUnit 測試運行的,沒有代碼覆蓋。您可以用大多數(shù)代碼覆蓋工具(例如,Cobertura 或 EclEmma)來運行本文中列出的任何一個測試。但是,用 Eclipse 內(nèi)的代碼覆蓋工具運行 RMock 測試時會帶來一些問題(參見 表 1)。以下代碼顯示了實際堆棧跟蹤的代碼片段。

清單 7. 場景 3 中測試失敗的堆棧跟蹤

               
 ...Superclass has no null constructors but no arguments were given
at net.sf.cglib.proxy.Enhancer.emitConstructors(Enhancer.java:718)
at net.sf.cglib.proxy.Enhancer.generateClass(Enhancer.java:499)
at net.sf.cglib.core.DefaultGeneratorStrategy.generate(DefaultGeneratorStrategy.java:25)
at net.sf.cglib.core.AbstractClassGenerator.create(AbstractClassGenerator.java:216)
at net.sf.cglib.proxy.Enhancer.createHelper(Enhancer.java:377)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:285)
at net.sf.cglib.proxy.Enhancer.create(Enhancer.java:660)
  .....
  .....


失敗原因是 jMock 無法通過沒有無參數(shù)構(gòu)造函數(shù)的類定義創(chuàng)建可行的模擬對象。實例化 Collaborator 對象的惟一方法是提供兩個簡單參數(shù)。您現(xiàn)在必須找到一種方法把參數(shù)提供給模擬對象實例化過程以達到同樣的效果,這是使用 RMock 的原因。

用 RMock 測試框架更正失敗的測試

要更正測試,必須執(zhí)行一些修改。這些更改可能顯得十分重要,但是實際上,它們是一種相對簡單的解決方法,利用兩種框架的強大功能來實現(xiàn)目的。

上一頁1234567下一頁
軟件測試工具 | 聯(lián)系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 国产免费怡红院视频 | 伊人中文字幕在线观看 | 1024手机在线基地 | 精品欧美一区二区三区在线 | 国产无遮挡又爽又色又刺激 | 国产一区玩具在线观看 | 亚洲图片视频在线观看 | 国产精品边做边接电话在线观看 | 一级a级国产不卡毛片 | 在线视频你懂得 | 成人18免费观看的动漫 | 热综合一本伊人久久精品 | 三级黄色免费网站 | 99视频精品全部国产盗摄视频 | 成人免费片 | 99re九精品视频在线视频 | 九九久久亚洲综合久久久 | 亚洲欧美日韩国产 | 日韩黄色影片 | 日韩美a一级毛片 | 狠狠色噜噜狠狠狠狠五月婷 | 亚洲精品1区 | 视频日韩p影院永久免费 | 日本老年人精品久久中文字幕 | 老司机精品久久 | 国产大片线上免费观看 | tom影院亚洲国产一区二区 | 五月天婷婷在线播放 | 国产精品亚洲欧美日韩一区在线 | 欧美成人免费 | 国产成人自啪精品视频 | 免费网站黄色 | 热久久国产欧美一区二区精品 | 在线视频h | 欧美人一级淫片a免费播放 欧美人妖猛交 | 嫩草影院永久一二三入口 | 国产精品一国产精品免费 | 在线三区 | 国产精品亚洲专区在线观看 | 中文字幕激情视频 | 麻豆成人在线视频 |