您的位置:軟件測(cè)試 > 開(kāi)源軟件測(cè)試 > 開(kāi)源單元測(cè)試工具 > junit
JUnit+JMockit單元測(cè)試
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2014/3/26 10:11:22 ] 推薦標(biāo)簽:單元測(cè)試 JUnit

  2.4 斷言
  對(duì)于需要測(cè)試的方法,用斷言來(lái)判斷其它執(zhí)行結(jié)果是否正確。
  assertEquals([Stringmessage],expected,actual)
  message是個(gè)可選的消息,將會(huì)在發(fā)生錯(cuò)誤時(shí)報(bào)告這個(gè)消息。
  expected是期望值,通常都是用戶指定的內(nèi)容。
  actual是被測(cè)試的代碼返回的實(shí)際值。
  如:
  booleansuccess=update();
  assertEquals(“更新是否成功”,true,success)
  這樣,當(dāng)運(yùn)行update()的返回值不為true的時(shí)候,這個(gè)單元測(cè)試會(huì)失敗。
  但有些時(shí)候,我們測(cè)試的方法并沒(méi)有返回值,方法只是執(zhí)行一個(gè)動(dòng)作,那么這個(gè)時(shí)候,我們不能用判斷的返回值來(lái)判斷方法是否執(zhí)行成功。
  如新建文件的方法,publicvoidcreateFile(StringfilePath),這個(gè)時(shí)候,方法并沒(méi)有返回值,我們?cè)谂袛喾椒ㄊ欠駡?zhí)行成功的時(shí)候,可以寫(xiě)一個(gè)輔助方法,來(lái)檢查一下指定的文件是否新建成功了,以此來(lái)驗(yàn)證createFile()的準(zhǔn)備性。如:
  createFile(“d:/a.txt”);
  booleanexist=fileExist(“d:/a.txt”);
  assertEquals(“新建文件”,true,exist);
  3、JMockit
  當(dāng)我們?cè)诰帉?xiě)單元測(cè)試的時(shí)候,常常會(huì)出現(xiàn)一些如調(diào)用的方法需要其它對(duì)象提供,而這個(gè)類現(xiàn)在又不具備,如很難創(chuàng)建、沒(méi)有環(huán)境、沒(méi)有開(kāi)發(fā)完等情況,這個(gè)時(shí)候,我們需要用JMockit模擬出一個(gè)類,來(lái)滿足我們的需求,來(lái)完成我們核心功能的測(cè)試。
  3.1 pom中增加JMockit的依賴
<dependency>
<groupId>jmockit</groupId>
<artifactId>jmockit</artifactId>
<version>1.0</version>
<scope>test</scope>
</dependency>
  3.2 模擬對(duì)象
  如需要測(cè)試的一個(gè)方法的一個(gè)值是配置在misInitConfig.xml中的,而misInitConfig.xml中的值需要用ReadConfInfo.getPropery()來(lái)獲取,而ReadConfInfo是在應(yīng)用啟動(dòng)時(shí)初始化的,這個(gè)時(shí)候并沒(méi)有web環(huán)境,也不能初始化,而我們也不需要自己手動(dòng)初始化ReadConfInfo,因?yàn)槲覀儨y(cè)試的重點(diǎn)不是ReadConfInfo,而是我們現(xiàn)有的功能。這個(gè)時(shí)候,我們可以用JMockit模塊出ReadConfInfo,來(lái)完成此功能的測(cè)試。
/**
*模擬ReadConfInfo
*/
publicstaticvoidmockReadConfInfo(){
newMockUp<ReadConfInfo>(){
@Mock
publicStringgetPropery(StringpropertyName){
if("conf_loglevel".equals(propertyName)){
return"debug";
}elseif("conf_logfolder".equals(propertyName)){
return"log";
}else{
return"";
}
}
}
}
  在單元測(cè)試的@BeforCalss中初始化,
/**
*初始化環(huán)境
*/
@BeforeClass
publicstaticvoidinit()throwsException{
//模擬ReadConfInfo
mockReadConfInfo();
}
  這樣,我們可以在程序中使用ReadConfInfo.getPropery()來(lái)完成我們的功能了。

上一頁(yè)12下一頁(yè)
軟件測(cè)試工具 | 聯(lián)系我們 | 投訴建議 | 誠(chéng)聘英才 | 申請(qǐng)使用列表 | 網(wǎng)站地圖
滬ICP備07036474 2003-2017 版權(quán)所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd