1

我正在使用 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()时(nullmockClass

4

1 回答 1

1

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

PowerMock.replay(MyClass.class);

?

来自 PowerMock MockStatic文档:

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

于 2013-01-08T14:14:58.217 回答