您的位置:軟件測(cè)試 > 開源軟件測(cè)試 > 開源單元測(cè)試工具 > junit
junit4 校驗(yàn)異常(exception)
作者:網(wǎng)絡(luò)轉(zhuǎn)載 發(fā)布時(shí)間:[ 2013/12/18 9:40:14 ] 推薦標(biāo)簽:

  接口測(cè)試的重要性,這個(gè)不大篇幅描述了,講一講接口測(cè)試時(shí)異常情況的測(cè)試方案吧。
  在開發(fā)代碼中,經(jīng)常會(huì)有獲取異常,捕獲異常的情況,在進(jìn)行接口測(cè)試的時(shí)候,往往會(huì)覆蓋異常情況。那么異常情況的exception校驗(yàn)也變成必要了。junit提供了一個(gè)方法直接獲取exception,校驗(yàn)exception。
  下面具體講講如何測(cè)試吧。
  被測(cè)代碼如下:
public long punishMemberWithRule(Long memberId, String punishRule, String operator)
throws ManagerException {
if (memberId == null || punishRule == null) {
throw new ManagerException("處罰會(huì)員傳入的會(huì)員Id: " + memberId
+ " punishRule: " + punishRule + "為空");
}
PunishRequestDO requestDO = new PunishRequestDO();
requestDO.setOperator(operator); //操作人
requestDO.setUserId(memberId);
requestDO.setAppName("Rhine");
requestDO.setRuleCode(punishRule); //
PunishResult punishResult = null;
try {
punishResult = punishExecuteClient.punish(requestDO);
log.error("[PunishMember] 處罰會(huì)員:  " + memberId + " 使用的code為 "
+ punishRule + "  處罰結(jié)果id:  " + punishResult.getResultId());
} catch (Exception e) {
throw new ManagerException("調(diào)用puniExecuteClient處罰會(huì)員失敗", e);
}
if (punishResult == null || punishResult.getResultId() == 0) {
throw new ManagerException(punishResult.getMessage());
}
return punishResult.getResultId();
}
  看代碼知道,這邊會(huì)有拋異常的情況,那么如何測(cè)試呢?
  下面為異常情況的測(cè)試代碼:
@Rule
public ExpectedException expectedEx =ExpectedException.none();
@Test
public void test01_memberIdisNull() throws ManagerException{
expectedEx.expect(ManagerException.class);
   expectedEx.expectMessage("處罰會(huì)員傳入的會(huì)員Id:");
   expectedEx.expectMessage("為空");
Long memberId=null;
String punishRule=null;
String perator=null;
pcManager.punishMemberWithRule(memberId,punishRule,operator);
}
  獲取exception類,及校驗(yàn)exception對(duì)應(yīng)的message。這個(gè)異常測(cè)試完成了。

  原理:junit4 @Rule注解下Exception實(shí)現(xiàn)了MethodRule,對(duì)拋出的異常進(jìn)行了捕獲,通過expect方法與執(zhí)行中的exception類進(jìn)行對(duì)比。主要是junit rules實(shí)現(xiàn)了ExpectedException類。具體原理還需要研讀junit4源碼才能知曉其更深入的原理。

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