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

时间:2013-01-07 20:35:18

标签: java easymock 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将被实例化。

1 个答案:

答案 0 :(得分:1)

好像你使用EasyMock模拟方式。您是否在调用getInstance()方法之前重放了MyClass,例如

PowerMock.replay(MyClass.class);

来自PowerMock MockStatic文档:

  

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