java.lang.IllegalStateException:返回值类型不兼容

Posted

技术标签:

【中文标题】java.lang.IllegalStateException:返回值类型不兼容【英文标题】:java.lang.IllegalStateException: incompatible return value type 【发布时间】:2011-07-13 07:10:56 【问题描述】:

我正在使用 EasyMock 在测试用例中创建模拟类。

expect(entity.getType()).andReturn("string");

类型属于String 数据类型。在我的开发环境中,它运行良好。但是如果我转移到我的服务器并进行构建,它会失败并出现以下错误:

java.lang.IllegalStateException: incompatible return value type

我不知道为什么它在服务器中失败并在我的开发机器中执行。

开发EasyMock版本:2.5.2

【问题讨论】:

entity 的类型是什么,getType() 究竟是如何声明的? 类实体 私有字符串类型; 如果你说的是对的,那只意味着一件事。在服务器和您的开发人员中有两个不同版本的类(甚至可能是整个 jar)。机器。此外,在设置模拟返回之前可能值得包含 System.out.println(entity.getType().getClass()) 语句。 【参考方案1】:

我也遇到了同样的问题。

我在 EasyMock 中进行了部分模拟,但忘记调用 addMockedMethod 以获得我想要设置期望的方法。

错误信息与上面相同,我想说这有点误导。

【讨论】:

【参考方案2】:

在我的例子中,方法是final,我在上面调用了expect。所以EasyMock 无法模拟方法,因此没有记录方法调用。

【讨论】:

【参考方案3】:

确保您的 entity 对象不是简单的 POJO(例如 new Entity()),它是使用 EasyMock 的 createMock() 方法创建的。

【讨论】:

【参考方案4】:

对我来说,我必须记得在使用过一次后调用 reset(...),否则我(奇怪地)收到此错误消息,第二次调用 expect。

【讨论】:

以上是关于java.lang.IllegalStateException:返回值类型不兼容的主要内容,如果未能解决你的问题,请参考以下文章