如何存根没有参数的静态无效方法?

How to stub static void methods that has no arguments?

PowerMockito.spy(SomeClass.class);   
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();

这似乎不起作用。我得到 UnfinishedStubbingException。

您没有完全完成 Mockito 句子。您忘记告诉存根它将调用什么方法。

完成句子...不要忘记最后的方法调用。

PowerMockito.doNothing().when(SomeClass.class).StaticVoidMethod();

您可以使用

PowerMockito.mockStatic(SomeClass.class)

这将模拟此 class 的所有方法。

有关详细信息,请阅读此 link https://github.com/powermock/powermock/wiki/MockStatic

干杯!!!

当你实在改不了的时候"code under test";那个静态调用给你带来了问题,那么你唯一的选择就是使用 PowerMock;正如另一个答案所概述的,他们的 documentation 给出了如何做到这一点的确切描述(并记录在案:仔细阅读并遵循该说明)。

但你必须明白 PowerMock 与其他模拟框架相比 "more expensive";例如:您无法将 PowerMock 与 Mockito 很好地结合起来。当然还有PowerMockito;但该工具仅适用于非常过时的 Mockito 版本。

长话短说:PowerMock可以解决这个问题;但当它在长期 运行.

中为您带来 其他 问题时,请不要感到惊讶