java - EasyMock 在 final方法上抛出不兼容的返回值类型

标签 java junit easymock

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

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

我这样 mock 它:

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 它。

@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);
}

最佳答案

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

Final methods cannot be mocked. If called, their normal code will be executed.

您可以使用 PowerMock 来模拟 final方法和静态方法。

关于java - EasyMock 在 final方法上抛出不兼容的返回值类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60627452/

相关文章:

mocking - 如何使用PowerMock/EasyMock从模拟方法获取输入参数

java - 检查 EasyMock 模拟是否处于重播模式/状态

java - 在 GlassFish 上创建和运行 RESTful Web 服务

java - JFrame 没有完全关闭

java - 断言处理在 "console"和 "result of running suite"中给出不同的结果

java - Spring MVC 测试中没有定义 [javax.persistence.EntityManagerFactory] ​​类型的合格 bean 问题

java - 使用 Javac/Ant 编译 1 个文件也会编译指定文件中的导入文件/类

java - 如何初始化模拟对象?

java - 强制关闭 notes.java (sharedpreferences)

java - Java Collection 中的同步是什么?