首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用Mockito抛出mock中的检查异常

使用Mockito抛出mock中的检查异常
EN

Stack Overflow用户
提问于 2010-09-21 23:50:55
回答 2查看 262K关注 0票数 235

我试图让我的一个模拟对象在调用特定方法时抛出一个检查过的异常。我正在尝试下面的方法。

代码语言:javascript
复制
@Test(expectedExceptions = SomeException.class)
public void throwCheckedException() {
    List<String> list = mock(List.class);
    when(list.get(0)).thenThrow(new SomeException());
    String test = list.get(0);
}

public class SomeException extends Exception {
}

但是,这会产生以下错误。

代码语言:javascript
复制
org.testng.TestException: 
Expected exception com.testing.MockitoCheckedExceptions$SomeException but got org.mockito.exceptions.base.MockitoException: 
Checked exception is invalid for this method!
Invalid: com.testing.MockitoCheckedExceptions$SomeException

看看Mockito documentation,他们只使用RuntimeException,难道不能用Mockito抛出来自模拟对象的检查异常吗?

EN

回答 2

Stack Overflow用户

发布于 2018-01-15 18:24:49

一种解决方法是使用willAnswer()方法。

例如,下面的代码使用BDDMockito进行工作(不抛出MockitoException,但实际上按照这里的要求抛出了一个选中的Exception ):

代码语言:javascript
复制
given(someObj.someMethod(stringArg1)).willAnswer( invocation -> { throw new Exception("abc msg"); });

对于普通的Mockito,等效的方法是使用doAnswer方法

票数 169
EN

Stack Overflow用户

发布于 2020-02-15 03:48:32

在Kotlin中,这对我很有效:

代码语言:javascript
复制
when(list.get(0)).thenThrow(new ArrayIndexOutOfBoundsException());

注意:抛出除Exception()以外的任何已定义异常

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3762047

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档