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

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

想要在单元测试时,模拟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. spring boot项目 中止运行 最常用的几种方法
  2. 那个曾被阿尔法狗在围棋领域打哭的男人--柯洁,又夺斗地主全国冠军....
  3. MFC设置静态文本框,编辑框等控件背景和字体颜色
  4. ecshop api.php,api.php
  5. Oracle数据库的三种标准的备份方法
  6. linux下无权限安装opencv3.4.6
  7. markdown中打勾,对号和打叉,表格内换行
  8. matlab 平滑曲线连接_科研画图-率失真曲线图改进:散点连接成曲线并画出原散点的标记点(基于Matlab)...
  9. 人民币升值与A股之我见
  10. javascript文字特效
  11. 计算机显卡的安装步骤简约,自己组装电脑:显卡安装教程
  12. lofter 爬虫_Python网络爬虫1 - 爬取网易LOFTER图片
  13. python实现图书管理系统(完善版)
  14. 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
  15. 客户要求降价,我如何通过涨价拿下订单
  16. [linux] 远程服务器安装unrar(无root)
  17. Git连接GitHub仓库,同步上传图片及CSDN外链图片转存失败解决方案
  18. vim只读模式修改文件
  19. 数据挖掘实战(9.5)--使用神经网络识别MINIST数据集
  20. SQLite3 dll加载失败问题解决

热门文章

  1. 数据恢复技术教程分享
  2. 20210122 记一次防止m3u8网页视频被破解和下载的思路
  3. 读书笔记 摘自:《吃掉那只青蛙:博恩·崔西的高效时间管理法则(原书第3版)》
  4. 干货 | 携程机票大数据架构最佳实践
  5. 视频网站建站程序CMS源码下载 (价值50元)
  6. html调整中文文字字间距,css怎么调整字间距?
  7. Verizon 48.3亿美元收购雅虎互联网资产
  8. 2.树莓派3安装archlinux配置web、samba和aria2
  9. 我的思维导图(第一幅)
  10. [渝粤教育] 四川农业大学 地理信息系统原理A 参考 资料