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. ...
最新文章
- Java培训的学费标准是多少
- ibatis动态查询条件(转载待完善)
- 简述python程序结构_python架构的概念讲解
- bitbucket初次使用
- 如何解决机器学习中的数据不平衡问题?
- java中try 与catch的使用
- 基于事件驱动架构构建微服务第1部分:应用程序特定的业务规则
- java编写通信录管理系统_Java 实现通讯录管理系统教程
- 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件
- Linux内核深入理解中断和异常(5):外部中断
- MATLAB的cat()函数
- sdram 时钟相位_SDRAM小结 — Windows Live
- CentOS7.6上搭建阿里云OSS的C SDK
- gRPC 1.20.1 发布,谷歌开源的高性能 RPC 框架
- 【转载】企业安全建设之数据库安全(中)
- 15个Rhino Grasshopper技巧【最新】
- Office 与 Visio安装冲突
- android系统铃声选择画面源码,gogo体育体验官网-官网首页
- filco蓝牙不好用_FILCO蓝牙机械键盘,超稳连接6米开外不掉线
- 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧
热门文章
- 计算机系分团委学生会工作总结,学院分团委学生会工作总结
- 用计算机弹奏胧月初音未来,胧月钢琴谱-初音未来-完整版
- Microsoft SQL Server 2019 下载、安装及Java JDBC配置连接数据库(多图详解 超详细)
- Go HTTP包源码阅读 持续更新 0.0
- Linux使用split命令切割大型日志文件 保留文件结尾删除前面的内容
- VC++隐藏任务栏(附源码)
- 学习PS课堂重点笔记(3.明暗调整和选区进阶)
- 不是吧,你还只会用@Service注册Bean吗?
- VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用 MFC 常规库[二]
- 广东省计算机等级考试一级试题(1),全国计算机等级考试一级B模拟试题及答案(1)...