【问题标题】:EasyMock throwing incompatible return value type on final methodEasyMock 在 final 方法上抛出不兼容的返回值类型
【发布时间】:2020-03-10 23:50:31
【问题描述】:

基本上,我正在尝试设置最终方法的结果。方法很简单,如下:

@NotNull
public final Server getServer() {
    return this.server;
}

我这样嘲笑它:

EasyMock.expect(object.getServer()).andReturn(server);

其中服务器是 POJO。这会抛出这个:

java.lang.IllegalStateException: incompatible return value type
    at org.easymock.internal.MocksControl.andReturn(MocksControl.java:281)

对于那条线。 我尝试不使用 POJO 作为服务器,而是模拟它。

@Mock
private Server server = mock(Server.class);

仍然是同样的错误。我绝对肯定它们是完全相同的类型。为什么会这样?

现在,由于某种原因,我得到了一个不同的错误:

java.lang.IllegalStateException: no last call on a mock available

同样的代码,我只有这个:

@Test
public void test() {
    EasyMock.expect(object.getServer()).andReturn(server);
    replayAll();
    TestedObject.useObject(object);
}

【问题讨论】:

    标签: java junit easymock


    【解决方案1】:

    模拟 final 方法时出错的原因是 EasyMock 不支持它。 https://easymock.org/user-guide.html#mocking-limitations

    Final 方法不能被模拟。如果调用,它们的正常代码将被执行。

    您可以使用 PowerMock 模拟最终方法和静态方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      • 2011-07-13
      • 1970-01-01
      • 2012-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多