【问题标题】:java.lang.IllegalStateException: incompatible return value typejava.lang.IllegalStateException:返回值类型不兼容
【发布时间】: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()) 语句。

标签: java unit-testing jakarta-ee easymock


【解决方案1】:

我也遇到了同样的问题。

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

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-04-15
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-08-29
          • 2016-05-28
          • 1970-01-01
          • 2019-09-06
          相关资源
          最近更新 更多