PowerMockito.spy(SomeClass.class);
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();
这似乎不起作用。我得到UnfinishedStubbingException。如何存留没有参数的静态void方法?
PowerMockito.spy(SomeClass.class);
PowerMockito.doNothing().when(SomeClass.class);
SomeClass.StaticVoidMethod();
这似乎不起作用。我得到UnfinishedStubbingException。如何存留没有参数的静态void方法?
当你真的不能改变“测试中的代码”;而且这个静态调用会给你带来问题,那么你唯一的选择就是使用PowerMock;并作为其他答案大纲,他们的documentation给出了一个确切的描述如何做到这一点(和记录:仔细阅读并按照说明)。
但是你必须明白,与其他嘲讽框架相比,PowerMock“更昂贵”;例如:您无法将PowerMock与Mockito很好地结合在一起。当然有PowerMockito;但该工具只适用于非常过时的Mockito版本。
长话短说:PowerMock可以解决这个问题;但从长远来看,当您为您创建其他问题时,请不要感到惊讶。
谢谢!你是对的! – mhsree
您可以使用
PowerMockito.mockStatic(SomeClass.class)
这会嘲笑这个类的所有方法。
欲了解更多信息,请通过此链接 https://github.com/powermock/powermock/wiki/MockStatic
干杯!
需要模拟静态方法是一种常见的代码异味,提示您应该将此方法移动到接口或类中,以便您可以引入模拟或伪造实例,并将* that *传入您正在测试的代码中,而不是全局模拟静态方法。 – dimo414
不能更改代码,因为它不是我写的。任何关于如何测试的建议? – mhsree
“这不是我写的。”它来自第三方库?请提供更多细节。 – davidxxx