Throw a RuntimeException when invoking an unstubbed method(调用未存根的方法时抛出 RuntimeException)
问题描述
我正在使用 Mockito.我想在调用未存根的方法时抛出 RuntimeException.
I'm using Mockito. I want to throw a RuntimeException when an unstubbed method is called.
有什么办法吗?
推荐答案
您可以为模拟设置默认答案.所有未存根的方法都将使用此默认答案.
You can set a default answer for a mock. All methods that aren't stubbed will use this default answer.
public void testUnstubbedException() {
// Create a mock with all methods throwing a RuntimeException by default
SomeClass someClass = mock( SomeClass .class, new RuntimeExceptionAnswer() );
doReturn(1).when(someClass).getId(); // Must use doReturn
int id = someClass.getId(); // Will return 1
someClass.unstubbedMethod(); // Will throw RuntimeException
}
public static class RuntimeExceptionAnswer implements Answer<Object> {
public Object answer( InvocationOnMock invocation ) throws Throwable {
throw new RuntimeException ( invocation.getMethod().getName() + " is not stubbed" );
}
}
请注意,您不能将 when 与此功能一起使用,因为该方法在 when 之前调用(mockito when() 调用如何工作?),它会在之前抛出 RuntimeException模拟进入存根模式.
Note that you cannot use when with this functionality, since the method is called before when (How does mockito when() invocation work?) and it will throw a RuntimeException before the mock goes into stubbing mode.
因此,您必须使用 doReturn 才能使其工作.
Therefore, you must use doReturn for this to work.
这篇关于调用未存根的方法时抛出 RuntimeException的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:调用未存根的方法时抛出 RuntimeException
基础教程推荐
- Java ECDSAwithSHA256 签名长度不一致 2022-01-01
- 将 Windows 证书导入 Java 2022-01-01
- 在java中使用xpath和selenium解析HTML表格数据 2022-01-01
- Maven:无效的目标版本:10 2022-01-01
- JPA惰性列表上的流 2022-01-01
- 如何在相机中应用自定义滤镜 [Surfaceview 预览]. 2022-01-01
- doFilter()是在servlet的工作完成之前还是之后执行的? 2022-01-01
- 将 double 转换为 Int,向下舍入 2022-01-01
- 在springboot中如何给mybatis加拦截器 2023-04-29
- 控制台应用程序中的 Java 键盘输入解析 2022-01-01
