当然,我使用JMockit已经有一段时间了,但我不记得这种困难。我对一些非常简单的代码进行了非常简单的测试。但即使我设置了returns = List,模拟方法仍然只返回一个字符串!这是测试:
ResponseWrapper(UriInfo uriInfo) {
MultivaluedMap<String,String> params = uriInfo.getQueryParameters();
String skip = getParam(params, "skip");
}
private String getParam(MultivaluedMap<String,String> params, String name) {
String result = null;
List<String> list = params.get(name); // <== Cast exception occurs here
if (list != null) {
result = list.get(0);
}
return result;
}
这是它正在测试的代码:
gluegen-rt-natives-windows-amd64
请注意,“params”是多值地图,而不是地图。所以params.get()应该返回一个List。如您所见,我正在设置返回List但代码中的模拟get()仅返回包含的String,这会导致转换异常。
我也尝试过使用return(...)。我已经尝试以单独的步骤制作arSkip并将其定义为final。什么都行不通。
我怀疑JMockit是将我的列表解释为顺序响应,但应该看到该类型与方法的返回类型匹配。这是怎么回事?
答案 0 :(得分:1)
这是从JMockit 1.11(2014年8月)开始的回归。它将在版本1.20(2015年10月)中修复。