Generics Mockito-使用集合时的ClassCastException
当用一个以集合作为参数的方法模拟类时,我遇到了一个令人费解的问题Generics Mockito-使用集合时的ClassCastException,generics,mockito,Generics,Mockito,当用一个以集合作为参数的方法模拟类时,我遇到了一个令人费解的问题 public class Foo { public Foo () { } public boolean doSomething(List<Bar> bars) { return true; } } public class Bar { public Bar() {} } 我得到: Mockito can only mock visible & non-fin
public class Foo {
public Foo () { }
public boolean doSomething(List<Bar> bars) {
return true;
}
}
public class Bar {
public Bar() {}
}
我得到:
Mockito can only mock visible & non-final classes.
If you are not sure...
Underlying exception : java.lang.IllegalArgumentException: java.lang.ClassCastExcception@1ba9917e
...
对于简短的错误描述,很抱歉,我必须从脱机终端手动复制
当我将doSomething()
方法的参数更改为justdoSomething(Bar)
时,它成功地创建了模拟
最后一件奇怪的事情是,它不会在其他工作站上重现。经过多次尝试和错误,这两台机器之间唯一的区别就是JDK版本。在它不工作的机器上,我们有1.8.0_05。更新到1.8.0_45修复了它。嗯,
do
是Java中的一个关键字(do-while
loop)。如果用关键字命名方法会导致一些奇怪的错误,我不会感到惊讶。我的错误,@peter,我想写一些通用函数名。我在没有编译器的情况下直接键入,因为我无法粘贴代码。。updated@Sagi:您似乎通知了错误的用户。“Mockito只能模拟可见和非最终类”,这就是问题所在(在您的“真实”代码中)。
Mockito can only mock visible & non-final classes.
If you are not sure...
Underlying exception : java.lang.IllegalArgumentException: java.lang.ClassCastExcception@1ba9917e
...