我正在使用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
将被实例化。
答案 0 :(得分:1)
好像你使用EasyMock模拟方式。您是否在调用getInstance()
方法之前重放了MyClass,例如
PowerMock.replay(MyClass.class);
来自PowerMock MockStatic文档:
使用PowerMock.mockStatic(ClassThatContainsStaticMethod.class)来模拟此类的所有方法。 使用PowerMock.replay(ClassThatContainsStaticMethod.class)将类更改为重播模式。 使用PowerMock.verify(ClassThatContainsStaticMethod.class)将类更改为验证模式。