Exception testing
怎样去验证代码是否抛出我们期望的异常呢?虽然在代码正常结束时候验证很重要,但是在异常的情况下确保代码如我们希望的运行也很重要。比如说:
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相关推荐
- kotlin中的异常处理_如何使用assertFailsWith在Kotlin中测试异常
kotlin中的异常处理 by Daniel Newton 丹尼尔·牛顿 如何使用assertFailsWith在Kotlin中测试异常 (How to test exceptions in Kotl ...
- 解读Junit的@Test注解,避免initializationerror
org.junit.Test @Target(value={METHOD}) - - - target注解:有效目标--只作用于方法 @Retention(value=RUNTIME) - - ...
- Spring MVC集成Log4j
以下示例显示如何使用Spring Web MVC框架集成LOG4J.首先使用Eclipse IDE,并按照以下步骤使用Spring Web Framework开发基于动态表单的Web应用程序: 创建一 ...
- Spring MVC-集成(Integration)-集成LOG4J示例(转载实践)
以下内容翻译自:https://www.tutorialspoint.com/springmvc/springmvc_log4j.htm 说明:示例基于Spring MVC 4.1.6. 以下示例说明 ...
- (五)使用模型单元测试进行MLOps持续交付
目录 data_utils.py email_notifications.py task.py Dockerfile 下一步 下载源 - 1.2 MB 在本系列文章中,我们将引导您完成将CI/CD应用 ...
- 软件测试基础 - 系统测试
系统测试(System Testing),是将已经确认的软件.计算机硬件.外设.网络等其他元素结合在一起,进行信息系统的各种组装测试和确认测试.系统测试是针对整个产品系统进行的测试,目的是验证系统是否 ...
- 软件测试相关术语及其含义
1.Manual testing:手工测试 手工测试是由人一个一个输入用例,然后观察结果的一个过程. 2.Automated Testing:自动化测试 自动化测试是用机器代替人为的进行测试,从而提高 ...
- 软件测试的36个常用术语
1.Manual testing 手工测试,先写下符合逻辑的测试用例,其次运用手动的方式来验证眼前的产品在测试用例面前是否是成功,并且记录. 2.Automated Testing 自动化测试,自 ...
- 软件测试常用术语(中英文对照)
Software engineering(软件工程) Application software(应用软件) Unit testing(单元测试) Integration testing(集成测试) S ...
最新文章
- JQUERY动态生成当前年份的前5年以及后 2年
- You don't have permission to access
- LeetCode: Unique Binary Search Trees [095]
- 腾讯下载视频转换MP4
- 【转】投影矩阵的推导
- php mysql 双条件排序,PHP-MySQL联合查询,按2个变量排序
- c#copyto_String.CopyTo()方法以及C#中的示例
- 01-第一章 Java开发中通用的方法和准则
- 游戏股的年过完了,盈利下滑,有企业靠卖房维持业绩
- 内部收益率irr_爱心人寿心相随年金险,IRR内部收益率测算
- 如何判断绩效管理系统实施是否有效
- flashfxp连接centos7失败原因之一
- 路过秋天版博客 V2.0 正式版发布 增加后台管理系统[支持多语言、多用户、多数据库、目录级URL]
- mc服务器怎么修改浮空字,我的世界可点击的浮空字怎么做 可点击的浮空字制作方法详解...
- React文件预览,React实现在线预览docx,xslx,pdf格式文件
- 手机与电脑局域网内数据互通
- html设置文本颜色三种写法,html字体颜色设置方法
- IO缓冲(buffer)和高速缓存(cache)
- hadoop设置java环境_Hadoop环境安装设置
- alpine linux 简介
热门文章
- ASP.NET Session 使用报告(转贴)
- Apache POI和EasyExcel 第七集:EasyExcel的基本操作,读取和写入Excel,一行足矣
- matlab 清楚屏幕,在shell中清除屏幕
- C++报错无效的预处理命令include_无废话--Mac OS, VS Code 搭建c/c++基本开发环境
- 计算机仿真实验用的教学软件是,AR增强现实教学软件,学习效果倍增
- opencv图像操作:读取,裁剪,保存,缩放,遍历和读取文件夹图片
- sublime text3 怎么配置、运行python_怎么用sublime text 3搭建python 的ide?
- python星号正方形_Python星号*与**用法分析
- webpack4.0--如何安装和配置(一)
- 高并发高可用系统应对策略的一些思考