我使用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)将类更改为验证模式