others - java抛出来自Mockito的模拟检查异常

我试图让一个mocked对象在调用特定方法时抛出一个异常,我尝试以下操作。


@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 {


}



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


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文档,它们只使用RuntimeException,用Mockito能不能从模拟对象抛出checked异常?

时间:

检查Java API 列表,您试图告诉Mockito抛出一个异常,该异常无效,无法由该特定方法调用抛出。

创建模拟列表时,使用List.class的定义创建它模拟,你指定的行为when(list.get(0)).thenThrow(new SomeException())List.class中的方法签名不匹配,因此Mockito失败,如果你真的想这样做,那么可以让mocki抛出一个new RunTimeException(),new ArrayIndexOutOfBoundsException()因为API指出这是唯一有效的Exception。

...