点击蓝色字免费订阅,每天收到这样的好信息

前言:最近有不少粉丝关注本公众号。并且我已经成功开通了流量主同时会赚一点点广告费,我打算每个月把这部分钱拿出来给大家买点书刊,算是给大家一点福利吧。大家想买什么书扫描下方的加他拉你加群。最后,非常感谢大家的关注。

想要在单元测试时,模拟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()时抛出中断异常的场景相关推荐

  1. Java中主线程如何捕获子线程抛出的异常

    Java中主线程如何捕获子线程抛出的异常 参考文章: (1)Java中主线程如何捕获子线程抛出的异常 (2)https://www.cnblogs.com/jpfss/p/10272885.html ...

  2. 【Java 多线程】Java中主线程如何捕获子线程抛出的异常

    首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下: public void run(); 而所有的具 ...

  3. [转]Java中主线程如何捕获子线程抛出的异常

    这么来看待这个问题.首先明确线程代码的边界.其实很简单,Runnable接口的run方法所界定的边界就可以看作是线程代码的边界.Runnable接口中run方法原型如下:     <<   ...

  4. android设置错误页面,Android ViewPager设置当前项目/页面时抛出IndexOutOfBounds异常

    我有一个ViewPager有三个项目.我试图设置ViewPager查看最右边的页面(这将是第二个元素).这是返回IndexOutOfBounds异常,虽然我知道索引应该在边界.这是确切的堆栈: 02- ...

  5. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任意类型对象 V 自定义异常 VI 异常相关代码 I 异常处理 1. 异常处理 : 使用 " try{}catch(){ ...

  6. 【C++ 语言】异常 ( 抛出字符串异常 | 抛出异常对象 | 抛出任意对象 | 抛出自定义异常 )

    转载自:https://blog.csdn.net/shulianghan/article/details/100002073 文章目录 I 异常处理 II 字符串异常 III 异常对象 IV 抛出任 ...

  7. 错误记录一:线程通信时抛出Exception in thread “Thread-0” java.lang.IllegalMonitorStateException异常

    错误记录一:线程通信时抛出Exception in thread "Thread-0" java.lang.IllegalMonitorStateException异常 完整异常: ...

  8. java 抛出指定异常信息_java 抛出异常处理的方法

    java 抛出异常处理的方法 为了避免调用的人不知道有异常,才抛出异常的,所以是谁掉用的久在哪里处理.说的对吗 对. 1.throws关键字通常被应用在声明方法时,用来指定可能抛出的异常.多个异常可以 ...

  9. 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. ...

最新文章

  1. Java培训的学费标准是多少
  2. ibatis动态查询条件(转载待完善)
  3. 简述python程序结构_python架构的概念讲解
  4. bitbucket初次使用
  5. 如何解决机器学习中的数据不平衡问题?
  6. java中try 与catch的使用
  7. 基于事件驱动架构构建微服务第1部分:应用程序特定的业务规则
  8. java编写通信录管理系统_Java 实现通讯录管理系统教程
  9. 黑客攻防技术宝典Web实战篇第2版—第5章 避开客户端控件
  10. Linux内核深入理解中断和异常(5):外部中断
  11. MATLAB的cat()函数
  12. sdram 时钟相位_SDRAM小结 — Windows Live
  13. CentOS7.6上搭建阿里云OSS的C SDK
  14. gRPC 1.20.1 发布,谷歌开源的高性能 RPC 框架
  15. 【转载】企业安全建设之数据库安全(中)
  16. 15个Rhino Grasshopper技巧【最新】
  17. Office 与 Visio安装冲突
  18. android系统铃声选择画面源码,gogo体育体验官网-官网首页
  19. filco蓝牙不好用_FILCO蓝牙机械键盘,超稳连接6米开外不掉线
  20. 这4个兼职平台实测靠谱,想做兼职的赶紧收藏起来看看吧

热门文章

  1. 计算机系分团委学生会工作总结,学院分团委学生会工作总结
  2. 用计算机弹奏胧月初音未来,胧月钢琴谱-初音未来-完整版
  3. Microsoft SQL Server 2019 下载、安装及Java JDBC配置连接数据库(多图详解 超详细)
  4. Go HTTP包源码阅读 持续更新 0.0
  5. Linux使用split命令切割大型日志文件 保留文件结尾删除前面的内容
  6. VC++隐藏任务栏(附源码)
  7. 学习PS课堂重点笔记(3.明暗调整和选区进阶)
  8. 不是吧,你还只会用@Service注册Bean吗?
  9. VS2019 MFC DLL共享动态链接库(MFC 常规库)封装例程非模态调用 MFC 常规库[二]
  10. 广东省计算机等级考试一级试题(1),全国计算机等级考试一级B模拟试题及答案(1)...