我是单元测试的新手,最近我使用profiler根据不同的条件使用if-else语句填充不同的指标。我编写了一个单元测试来检查是否填充了正确的指标。但是我收到Incompatible return value type
错误。代码段如下:
ProfilerObject1 mockObject = ctrl.createMock(ProfilerObject1.class);
EasyMock.expect(ProfilerObject2.func1()).andReturn(mockObject);
PopulateMetric(m1);
EasyMock.expectLastCall().once();
control.replay();
我在第2行(EasyMock.expect调用)上获得了不兼容的返回值错误,而该函数返回了ProfilerObject1类型的对象。我不知道为什么我会收到这个错误。
真的很感激任何帮助。 TIA
PS:我在两个不同的地方使用此代码段,而在第二个地方则出现no last call on mock available
错误。这让我更加困惑。
答案 0 :(得分:0)
您正在设置静态方法调用的期望值。 EasyMock不支持它。要模拟静态方法,您应该使用PowerMock和EasyMock。请查看以下示例,了解如何操作。
@RunWith(PowerMockRunner.class)
@PrepareForTest({ ProfilerObject2.class })
public class TestClass {
@Test
public void test() {
PowerMock.mockStatic(ProfilerObject2.class);
ProfilerObject1 mockObject = ctrl.createMock(ProfilerObject1.class);
EasyMock.expect(ProfilerObject2.func1()).andReturn(mockObject);
// your rest of the code goes here
PowerMock.replayAll();
}
}