Powermock没有返回正确的对象静态方法



我使用PowerMock尝试模拟静态方法的最终类,但每当我的代码调用MyClass.getInstance()时,它返回null

在我的测试中,我注释了测试类
@RunWith(PowerMockRunner.class)
@PrepareForTest(MyClass.class) 

在我制作模拟的方法中,我做了以下操作

suppressConstructor(MyClass.class);
PowerMock.mockStatic(MyClass.class);
mockClass = PowerMock.createMock(MyClass.class);
expect(MyClass.getInstance()).andReturn(mockClass);

PowerMock.createMock是否应该创建EasyMock类?

当我在我的代码(MyClass.getInstance())中调用它时,它总是返回null,但如果我通过测试类步进,变量mockClass被实例化。

您似乎使用了EasyMock的嘲弄方式。在调用getInstance()方法之前,您是否重播了MyClass,例如

PowerMock.replay(MyClass.class);

?

来自PowerMock MockStatic文档:

使用PowerMock.mockStatic(ClassThatContainsStaticMethod.class)模拟该类的所有方法。使用PowerMock.replay(ClassThatContainsStaticMethod.class)将类更改为重播模式。使用PowerMock.verify(ClassThatContainsStaticMethod.class)将类更改为验证模式

最新更新