模拟引发受包保护的异常



问题:对于我的一个单元测试,我想模拟结合Mockito抛出异常(io.netty.handler.timeout.TimeoutException(。但是,Java不允许这样做,因为异常是受包保护的。

现在我有以下代码:

doAnswer(invocation -> {
throw new TimeoutException("test-description");
}).when(someObject).someMethod();

这段代码不编译,但我想知道是否有任何替代方案可以模拟抛出此异常。

io.netty.handler.timeout.TimeoutException本身是公共的,但其构造函数是包私有的。您可以模拟异常:

doThrow(TimeoutException.class).when(someObject).someMethod();

或:

doThrow(mock(TimeoutException.class)).when(someObject).someMethod();

最新更新