【问题标题】:Easymock incompatible return value type errorEasymock 不兼容的返回值类型错误
【发布时间】:2012-07-30 18:54:59
【问题描述】:

我正在尝试为这段特定的代码创建一个 EasyMock,这样 innerfValue 的类型就是 IJavaValue,它是 IJavaObject 的子类。我已经尝试了通过模拟 innerfValue 然后只是假设 aJavaValue 指向 innerfValue 并模拟 sendmessage 方法来处理这个问题的传统方法,就好像它是 innerfValue 的方法一样,但它一直没有工作,当我到达当我这样做时,它给了我一个不兼容的返回值类型(在这种情况下,symbolvalue 是我在我的模拟 innerfValue 对象上调用 sendmessage 方法后返回的模拟对象,而不是作为另一段代码中的 symbolValue 的 saem ):

EasyMock.expect(((IJavaObject)symbolValue).toString()).andReturn("aValue");

这是一段代码

IJavaObject aJavaValue = (IJavaObject)innerfValue.getValue();
IJavaObject symbolValue = (IJavaObject) ((IJavaObject)aJavaValue).sendMessage(
    "toString", "()Ljava/lang/String;", null, thread, false);
value = symbolValue.toString();

【问题讨论】:

  • 1) 您不需要在单元测试中加入期望值。模拟 symbolValue 应该已经有一个 toString 方法。
  • 2) 它现在以什么方式工作? “不兼容的返回值类型”:这是否意味着它返回一个值但不是您想要的值?还是不返回任何值?
  • 在我的 junit 失败跟踪中,它指出“java.lang.illegalStateException:不兼容的返回值类型”。至于实际的错误是什么,我不是 100% 确定的。我想这是我的问题。
  • 嗯。对此不确定。如果您有整个堆栈跟踪,那将非常有帮助。

标签: java unit-testing junit easymock


【解决方案1】:

EasyMock 不能模拟 toString() 方法。这就是我遇到问题的原因。

【讨论】:

    【解决方案2】:

    我知道我的问题出在哪里。

    如果您使用的是 EasyMock.createMockBuilder(XXX.class)

    确保你记得 addMockedMethod("methodName").createMock();

    【讨论】:

      猜你喜欢
      • 2021-04-15
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 2022-12-15
      • 2011-07-13
      • 1970-01-01
      • 2019-04-28
      • 1970-01-01
      相关资源
      最近更新 更多