java sleep 抛出异常_PowerMockito模拟Thread.sleep()时抛出中断异常的场景
点击蓝色字免费订阅,每天收到这样的好信息
前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。
想要在单元测试时,模拟Thread.sleep()时抛出中断异常的行为,但是仅使用PowerMockito.mockStatic(Thread.class)是不够的,上代码:
要测试的方法getResult:
public class Weekend{public void getResult() throws InterruptedException{try {Thread.sleep(2000);} catch(InterruptedException e) {throw e;}}}
WeekendTest文件
@RunWith(PowerMockRunner.class)// 此处为实际执行 Thread.sleep()的类 Weekend.class,而不是 Thread.class@PrepareForTest(Weekend.class)public class WeekendTest {@InjectMocksprivate Weekend weekend;@Test(expected = InterruptedException.class)public void testGetResult() throws InterruptedException {PowerMockito.mockStatic(Thread.class);PowerMockito.doThrow(new InterruptedException()).when(Thread.class);Thread.sleep(anyLong());weekend.getResult();}}
代码运行结果:
需要注意的是,通常我们mock静态方法时,是在@PrepareForTest注解中,加上对应类名,如:
@PrepareForTest(Utils.class)public class Test{public void testFunction() {PowerMockito.mockStatic(Utils.class);PowerMockito.when(Utils.function()).thenReturn(expectedResult);}}
但是对于Thread.sleep方法,在@PrepareForTest中加入Thread.class是无效的,必须加入实际调用Thread.sleep()方法的类,本例中为Weekend.class. 如果没有在@PrepareForTest中加入实际调用类,则无法抛出异常。
打油诗
我不在乎我的作品文章是被现在的人读还是由子孙后代来读。既然上帝花了六千年来等一位观察者,我可以花上一个世纪来等待读者。
java sleep 抛出异常_PowerMockito模拟Thread.sleep()时抛出中断异常的场景相关推荐
- Java中主线程如何捕获子线程抛出的异常
Java中主线程如何捕获子线程抛出的异常 参考文章: (1)Java中主线程如何捕获子线程抛出的异常 (2)https://www.cnblogs.com/jpfss/p/10272885.html ...
- 【Java 多线程】Java中主线程如何捕获子线程抛出的异常
首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: public void run(); 而所有的具 ...
- [转]Java中主线程如何捕获子线程抛出的异常
这么来看待这个问题.首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: << ...
- android设置错误页面,Android ViewPager设置当前项目/页面时抛出IndexOutOfBounds异常
我有一个ViewPager有三个项目.我试图设置ViewPager查看最右边的页面(这将是第二个元素).这是返回IndexOutOfBounds异常,虽然我知道索引应该在边界.这是确切的堆栈: 02- ...
- 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任意类型对象 V 自定义异常 VI 异常相关代码 I 异常处理 1. 异常处理 : 使用 " try{}catch(){ ...
- 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )
转载自:https://blog.csdn.net/shulianghan/article/details/100002073 文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任 ...
- 错误记录一:线程通信时抛出Exception in thread “Thread-0” java.lang.IllegalMonitorStateException异常
错误记录一:线程通信时抛出Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 完整异常: ...
- java 抛出指定异常信息_java 抛出异常处理的方法
java 抛出异常处理的方法 为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理.说的对吗 对. 1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以 ...
- AES加密时抛出java.security.InvalidKeyException:#160;Illegal#160;key#160;size#160;or#160;def...
原文:AES加密时抛出java.security.InvalidKeyException: Illegal key size or def 使用AES加密时,当密钥大于128时,代码会抛出 java. ...
最新文章
- spring boot项目 中止运行 最常用的几种方法
- 那个曾被阿尔法狗在围棋领域打哭的男人--柯洁,又夺斗地主全国冠军....
- MFC设置静态文本框,编辑框等控件背景和字体颜色
- ecshop api.php,api.php
- Oracle数据库的三种标准的备份方法
- linux下无权限安装opencv3.4.6
- markdown中打勾,对号和打叉,表格内换行
- matlab 平滑曲线连接_科研画图-率失真曲线图改进:散点连接成曲线并画出原散点的标记点(基于Matlab)...
- 人民币升值与A股之我见
- javascript文字特效
- 计算机显卡的安装步骤简约,自己组装电脑:显卡安装教程
- lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片
- python实现图书管理系统(完善版)
- 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
- 客户要求降价,我如何通过涨价拿下订单
- [linux] 远程服务器安装unrar(无root)
- Git连接GitHub仓库,同步上传图片及CSDN外链图片转存失败解决方案
- vim只读模式修改文件
- 数据挖掘实战(9.5)--使用神经网络识别MINIST数据集
- SQLite3 dll加载失败问题解决