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:返回值类型不兼容的主要内容,如果未能解决你的问题,请参考以下文章