我正在尝试编写一个单元测试,在成功之前抛出特定次数的异常。这是可行的方法不返回void:
OngoingStubbing<Result> requestCallStub = when(request.call());
for(int i = 0; i < numFailures; i++){
requestCallStub = requestCallStub.thenThrow(
new Exception("Failing for test reasons, round " + i));
}
然而,这只有在call()方法是非void方法时才可行。我想知道是否有一种方法使用相同的模式为void方法?
我可以用下面的代码解决这个问题:
Stubber deleteStubber = null;
if (numOfFailures > 0) {
deleteStubber = PowerMockito.doThrow(new NullPointerException("Testing"));
for (int i = 1; i < numOfFailures; i++) {
deleteStubber = deleteStubber.doThrow(new NullPointerException("Testing"));
}
}
deleteStubber.doNothing().when(request).call();
希望对其他人也有帮助。