我想在执行该方法的前5次抛出一个特定的异常。之后,我想抛出另一个例外。
理想情况下,我有这个代码片段,显然不起作用
int count = 0;
int max = 5;
@Test
public void myTest(){
...
doThrow(count++ < max ? myException1 : myException2).when(myClass).myMethod()
...
}
我怎样才能使它工作?
您可以在thenThrow(Throwable... throwables)
返回的OngoingStubbing
实例上使用Mockito.when(...)
方法。
该方法接受var-args
,它是在调用mocked方法时连续抛出的异常。
@Test
public void myTest(){
// ...
Mockito.when(myClass.myMethod())
.thenThrow( myException1,
myException1,
myException1,
myException1,
myException1,
myException2);
// ...
}
或者通过链接OngoingStubbing.thenThrow()
调用,因为该方法实际上返回一个OngoingStubbing
对象:
@Test
public void myTest(){
// ...
Mockito.when(myClass.myMethod())
.thenThrow(myException1)
.thenThrow(myException1)
.thenThrow(myException1)
.thenThrow(myException1)
.thenThrow(myException1)
.thenThrow(myException2);
// ...
}