【发布时间】: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