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

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

如果將在各種測試用例中執行公共操作,則在測試中包括 setUp() 方法是一種很好的想法。包括 tearDown() 方法也很不錯,但不作嚴格要求,除非要運行集成測試。

另請注意,使用 jMock 和 RMock,框架將在測試運行結束時或測試運行期間在所有模擬對象中檢查所有期望。并不實際需要為每個模擬期望包括 verify() 方法。當作為 JUnit 測試運行時,測試將通過,如下所示:

圖 3. 場景 1 測試通過

 ServiceTestClass 類將擴展 jMock CGLIB 的 org.jmock.cglib.MockObjectTestCase 類。mockCollaborator 是一個十分簡單的 org.jmock.JMock 類。通常,用 jMock 生成模擬對象有兩種方法:

    要模擬接口,則使用 new Mock(Class.class) 方法
    要模擬具體類,則使用 mock(Class.class, "identifier") 方法

必須注意的是怎樣將模擬代理 傳遞給 ServiceClass 類中的 runService() 方法。使用 jMock,您可以從已創建的模擬對象(其中期望已經被設定)中提取代理實現。這一點在本文稍后的場景中至關重要,尤其是在涉及 RMock 的場景中。

回頁首

場景 2:使用 jMock 模擬帶有默認構造函數的具體類

假定 ServiceClass 類中的 runService() 方法僅接受 Collaborator 類的具體實現。jMock 能夠確保先前的測試通過而無需 更改期望嗎?是的,只要您能夠構造簡單默認樣式的 Collaborator 類。

更改 ServiceClass 類中的 runService() 方法使其反映以下代碼。

清單 4. 經過編輯的場景 2 的 ServiceClass 類

               
public class ServiceClass {
  public ServiceClass(){
  //no-args constructor 
  }

public boolean runService(Collaborator collaborator){
  if("success".equals(collaborator.executeJob())){
    return true;
  }
  else{
    return false;
  }
}
}


ServiceClass 類的 if...else 邏輯分支保持不變(為了清晰起見)。同時,無參數構造函數仍然適用。注,并不總是需要有創造性邏輯,例如 while...do 子句或 for 循環來正確地測試類的方法。只要有針對類使用的對象的方法執行,簡單的模擬期望足以測試那些執行。

您還必須更改 ServiceClassTest 類以匹配場景,如下所示:

清單 5. 經過編輯的場景 2 的 ServiceClassTest 類

               
...
private ServiceClass serviceClass;
  private Mock mockCollaborator;
  private Collaborator collaborator;
 
  public void setUp(){
    serviceClass = new ServiceClass();
    mockCollaborator = mock(Collaborator.class, "mockCollaborator");
  }
 
  public void testRunServiceAndReturnFalse(){
    mockCollaborator.expects(once()).method("executeJob").will(returnValue("failure"));
    collaborator = (Collaborator)mockCollaborator.proxy();
    boolean result = serviceClass.runService(collaborator);
    assertFalse(result);
  }
}


這里有幾點需要注意。第一,runService() 方法簽名已經不同于以往。它現在不接受 ICollaborator 接口,而接受具體類實現(Collaborator 類)。測試框架而言,此更改非常重大(注,雖然在本質上反對多態,但是我們將使用傳遞具體類的示例(僅供舉例之用)。在實際的面向對象的場景中不能這樣做)。

上一頁1234567下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 欧美黄色视屏 | 国产又黄又湿又刺激不卡网站 | 国产短视频精品一区二区三区 | 日韩黄色网 | 成人免费男女视频网站慢动作 | 日韩欧美在线综合网 | 久久国产成人午夜aⅴ影院 久久国产欧美日韩精品 | 久久狠狠色噜噜狠狠狠狠97 | 天堂网中文在线 | 欧美日韩性高爱潮视频 | 亚洲噜噜噜噜噜影院在线播放 | 亚洲大片免费观看 | 日韩在线播放全免费 | 国产在线视频www片 国产在线日韩在线 | 在线一区播放 | 在线视频亚洲欧美 | 精品国产一区在线观看 | 精品国语国产在线对白 | 一级黄a| 国产大片黄 | 午夜aaa| 日本免费大黄 | 色噜噜狠狠狠狠色综合久一 | 欧美日韩国产一区二区三区播放 | 欧美一区二区三区不卡免费观看 | 怡红院视频在线观看最新 | 日本 国产 欧美 | 在线观看黄色的网站 | 男女羞羞视频免费看 | 男人操女人免费网站 | 日日操夜夜爽 | 国产精品亚洲欧美日韩区 | 手机在线看片国产 | 中文字幕人成乱码在线观看 | 波多 在线 | 日本3级视频 | 天天舔天天射 | 欧美日韩午夜视频 | 国产1卡2卡三卡四卡网站 | 在线亚洲欧洲国产综合444 | 国产日 |