模拟抛出一个受包保护的异常

Simulate throwing an exception that is package protected

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

现在我有以下代码:

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

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

classio.netty.handler.timeout.TimeoutException本身是public,但它的构造函数是package-private。您可以模拟异常:

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

或:

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