Java 如何存根没有参数的静态void方法?

Java 如何存根没有参数的静态void方法?,java,junit,mockito,powermock,Java,Junit,Mockito,Powermock,这似乎不起作用。我得到了一个未完成的存根异常。你的Mockito句子还没说完。您忘了告诉存根它将调用什么方法 为了完成这句话,不要忘记结尾的方法调用 PowerMockito.spy(SomeClass.class); PowerMockito.doNothing().when(SomeClass.class); SomeClass.StaticVoidMethod(); 你可以用 PowerMockito.doNothing().when(SomeClass.class).Static

这似乎不起作用。我得到了一个未完成的存根异常。

你的Mockito句子还没说完。您忘了告诉存根它将调用什么方法

为了完成这句话,不要忘记结尾的方法调用

PowerMockito.spy(SomeClass.class);   
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();
你可以用

PowerMockito.doNothing().when(SomeClass.class).StaticVoidMethod();
这将模拟该类的所有方法

有关更多信息,请访问此链接


干杯

当您确实无法更改“测试中的代码”时;静态调用会给您带来问题,那么您唯一的选择就是使用PowerMock;正如另一个答案所概括的那样,他们给出了如何做到这一点的确切描述(并记录在案:仔细阅读并遵循说明)

但您必须了解,与其他模拟框架相比,PowerMock“更昂贵”;例如:您无法将PowerMock与Mockito很好地结合起来。当然有PowerMockito;但该工具只适用于几乎过时的Mockito版本


长话短说:PowerMock可以解决这个问题;但从长远来看,如果这会给您带来其他问题,请不要感到惊讶。

我还能怎么做?为什么要回答?:)@mhsree:我已经修改了答案;我觉得我提到的东西很明显,但我现在意识到情况并非如此。我无法调用WayNot compileNeeding to mock static methods是一种常见的代码气味,建议您将此方法移动到接口或类中,这样您就可以引入一个模拟或伪实例并将其传递到您正在测试的代码中,而不是全局模拟静态方法。无法更改代码,因为它不是由我编写的。关于如何测试它有什么建议吗?“它不是我写的。”它来自第三方库?请提供更多的细节。除此之外:当所有的答案都没有帮助时;然后贴出一张照片来说明你的问题。我们无法真正帮助您解决输入不足的问题。@mhsre那么您缺少了其中列出的一个步骤。请放心:PowerMock是一个可怕的工具,但是当您正确使用它时,它就完成了任务。
PowerMockito.mockStatic(SomeClass.class)