怎样去验证代码是否抛出我们期望的异常呢?虽然在代码正常结束时候验证很重要,但是在异常的情况下确保代码如我们希望的运行也很重要。比如说:

new ArrayList<Object>().get(0);

这句代码会抛出一个IndexOutOfBoundsException异常。有三种方法来验证ArrayList是否抛出了正确的异常。

1. @Test 里面加上一个参数"expected"。(参见test01)

谨慎使用expected参数。方法里的任意代码抛出IndexOutOfBoundsException异常都会导致该测试pass。复杂的测试建议使用 ExpectedException 规则。

2.Try/Catch(参见test02)

方法1仅仅适用于简单的例子,它有它的局限性。比如说,我们不能测试异常的信息返回值,或者异常抛出之后某个域对象的状态。对于这种需求我们可以采用JUnit 3.x流行的 try/catch 来实现。

3.ExpectedException 规则(参见test03)

该规则不仅可以测试抛出的异常,还可以测试期望的异常信息。

import static org.junit.Assert.*;
import static org.hamcrest.CoreMatchers.*;
import java.util.ArrayList;
import java.util.List;
import org.junit.Rule;
import org.junit.Test;
import org.junit.rules.ExpectedException;  public class ExceptionTest {  @Test(expected=IndexOutOfBoundsException.class)  public void test01(){  new ArrayList<Object>().get(0);  }  @Test()  public void test02(){  try{  new ArrayList<Object>().get(0);  fail("Expected an IndexOutOfBoundsException to be thrown");  }catch(IndexOutOfBoundsException e){  assertThat(e.getMessage(),is("Index: 0, Size: 0"));  }  }  @Rule  public ExpectedException thrown=ExpectedException.none();  @Test  public void test03() throws IndexOutOfBoundsException{  List<Object> list=new ArrayList<Object>();  thrown.expect(IndexOutOfBoundsException.class);  thrown.expectMessage("Index: 0, Size: 0");  list.get(0);  }
} 

转载于:https://www.cnblogs.com/miniren/p/4638511.html

Exception testing相关推荐

  1. kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常

    kotlin中的异常处理 by Daniel Newton 丹尼尔·牛顿 如何使用assertFailsWith在Kotlin中测试异常 (How to test exceptions in Kotl ...

  2. 解读Junit的@Test注解,避免initializationerror

    org.junit.Test @Target(value={METHOD})    - - - target注解:有效目标--只作用于方法 @Retention(value=RUNTIME)  - - ...

  3. Spring MVC集成Log4j

    以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...

  4. Spring MVC-集成(Integration)-集成LOG4J示例(转载实践)

    以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 说明:示例基于Spring MVC 4.1.6. 以下示例说明 ...

  5. (五)使用模型单元测试进行MLOps持续交付

    目录 data_utils.py email_notifications.py task.py Dockerfile 下一步 下载源 - 1.2 MB 在本系列文章中,我们将引导您完成将CI/CD应用 ...

  6. 软件测试基础 - 系统测试

    系统测试(System Testing),是将已经确认的软件.计算机硬件.外设.网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试.系统测试是针对整个产品系统进行的测试,目的是验证系统是否 ...

  7. 软件测试相关术语及其含义

    1.Manual testing:手工测试 手工测试是由人一个一个输入用例,然后观察结果的一个过程. 2.Automated Testing:自动化测试 自动化测试是用机器代替人为的进行测试,从而提高 ...

  8. 软件测试的36个常用术语

    1.Manual testing  手工测试,先写下符合逻辑的测试用例,其次运用手动的方式来验证眼前的产品在测试用例面前是否是成功,并且记录. 2.Automated Testing  自动化测试,自 ...

  9. 软件测试常用术语(中英文对照)

    Software engineering(软件工程) Application software(应用软件) Unit testing(单元测试) Integration testing(集成测试) S ...

最新文章

  1. JQUERY动态生成当前年份的前5年以及后 2年
  2. You don't have permission to access
  3. LeetCode: Unique Binary Search Trees [095]
  4. 腾讯下载视频转换MP4
  5. 【转】投影矩阵的推导
  6. php mysql 双条件排序,PHP-MySQL联合查询,按2个变量排序
  7. c#copyto_String.CopyTo()方法以及C#中的示例
  8. 01-第一章 Java开发中通用的方法和准则
  9. 游戏股的年过完了,盈利下滑,有企业靠卖房维持业绩
  10. 内部收益率irr_爱心人寿心相随年金险,IRR内部收益率测算
  11. 如何判断绩效管理系统实施是否有效
  12. flashfxp连接centos7失败原因之一
  13. 路过秋天版博客 V2.0 正式版发布 增加后台管理系统[支持多语言、多用户、多数据库、目录级URL]
  14. mc服务器怎么修改浮空字,我的世界可点击的浮空字怎么做 可点击的浮空字制作方法详解...
  15. React文件预览,React实现在线预览docx,xslx,pdf格式文件
  16. 手机与电脑局域网内数据互通
  17. html设置文本颜色三种写法,html字体颜色设置方法
  18. IO缓冲(buffer)和高速缓存(cache)
  19. hadoop设置java环境_Hadoop环境安装设置
  20. alpine linux 简介

热门文章

  1. ASP.NET Session 使用报告(转贴)
  2. Apache POI和EasyExcel 第七集:EasyExcel的基本操作,读取和写入Excel,一行足矣
  3. matlab 清楚屏幕,在shell中清除屏幕
  4. C++报错无效的预处理命令include_无废话--Mac OS, VS Code 搭建c/c++基本开发环境
  5. 计算机仿真实验用的教学软件是,AR增强现实教学软件,学习效果倍增
  6. opencv图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片
  7. sublime text3 怎么配置、运行python_怎么用sublime text 3搭建python 的ide?
  8. python星号正方形_Python星号*与**用法分析
  9. webpack4.0--如何安装和配置(一)
  10. 高并发高可用系统应对策略的一些思考