mockito5.4.0单元测试(4) --主动throw异常,模拟异常处理,doThrow和thenThrow
【case 1】
import static org.mockito.Mockito.*; // 引入类
LinkedList mockedList = mock(LinkedList.class); // 获得mock对象
//stubbing
when(mockedList.get(0)).thenReturn("first"); // 如果获取0索引,则返回:first
when(mockedList.get(1)).thenThrow(new RuntimeException()); // 如果获取1索引,则throw异常
//following prints "first"
System.out.println(mockedList.get(0)); // 正常获得0: first
//following throws runtime exception
System.out.println(mockedList.get(1)); // 代码抛出异常,执行被终止
//following prints "null" because get(999) was not stubbed
System.out.println(mockedList.get(999)); // 如果get(1) 那一行代码被注释掉,则这里执行得到的是个Null
verify(mockedList).get(0); // 校验曾经交互get过0这个索引对象,如果get(1) 那一行被注释掉,则代码会执行到这里,并且会pass
verify(mockedList).get(10); // 校验曾经交互get过10这个索引对象,如果get(1) 那一行被注释掉,则代码会执行到这里,但是会fail失败,因为上面的交互行为中从来没有被get过10索引

【case 2】
import static org.mockito.Mockito.*;
LinkedList mockedList = mock(LinkedList.class);
// 如果调用clear方法,就抛出异常
doThrow(new RuntimeException("my_error_123456")).when(mockedList).clear();
// clear清空list对象,此处会抛出异常
mockedList.clear();

end.

分类:
mockito单元测试
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架