您的位置:软件测试 > 开源软件测试 > 开源单元测试工具 > junit
junit4 校验异常(exception)
作者:网络转载 发布时间:[ 2013/12/18 9:40:14 ] 推荐标签:

  接口测试的重要性,这个不大篇幅描述了,讲一讲接口测试时异常情况的测试方案吧。
  在开发代码中,经常会有获取异常,捕获异常的情况,在进行接口测试的时候,往往会覆盖异常情况。那么异常情况的exception校验也变成必要了。junit提供了一个方法直接获取exception,校验exception。
  下面具体讲讲如何测试吧。
  被测代码如下:
public long punishMemberWithRule(Long memberId, String punishRule, String operator)
throws ManagerException {
if (memberId == null || punishRule == null) {
throw new ManagerException("处罚会员传入的会员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] 处罚会员:  " + memberId + " 使用的code为 "
+ punishRule + "  处罚结果id:  " + punishResult.getResultId());
} catch (Exception e) {
throw new ManagerException("调用puniExecuteClient处罚会员失败", e);
}
if (punishResult == null || punishResult.getResultId() == 0) {
throw new ManagerException(punishResult.getMessage());
}
return punishResult.getResultId();
}
  看代码知道,这边会有抛异常的情况,那么如何测试呢?
  下面为异常情况的测试代码:
@Rule
public ExpectedException expectedEx =ExpectedException.none();
@Test
public void test01_memberIdisNull() throws ManagerException{
expectedEx.expect(ManagerException.class);
   expectedEx.expectMessage("处罚会员传入的会员Id:");
   expectedEx.expectMessage("为空");
Long memberId=null;
String punishRule=null;
String perator=null;
pcManager.punishMemberWithRule(memberId,punishRule,operator);
}
  获取exception类,及校验exception对应的message。这个异常测试完成了。

  原理:junit4 @Rule注解下Exception实现了MethodRule,对抛出的异常进行了捕获,通过expect方法与执行中的exception类进行对比。主要是junit rules实现了ExpectedException类。具体原理还需要研读junit4源码才能知晓其更深入的原理。

软件测试工具 | 联系我们 | 投诉建议 | 诚聘英才 | 申请使用列表 | 网站地图
沪ICP备07036474 2003-2017 版权所有 上海泽众软件科技有限公司 Shanghai ZeZhong Software Co.,Ltd