不兼容的返回值类型

时间:2017-02-28 20:11:24

标签: java unit-testing profiler easymock

我是单元测试的新手,最近我使用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错误。这让我更加困惑。

1 个答案:

答案 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();

   }

}