使用将集合作为参数的方法模拟类时,我遇到了一个令人费解的问题。
public class Foo {
public Foo () { }
public boolean doSomething(List<Bar> bars) {
return true;
}
}
public class Bar {
public Bar() {}
}
尝试创建模拟
时Foo foo = mock(Foo.class);
我明白了:
Mockito can only mock visible & non-final classes.
If you are not sure...
Underlying exception : java.lang.IllegalArgumentException: java.lang.ClassCastExcception@1ba9917e
...
对于简短的错误说明,我不得不从离线终端手动复制。
当我将doSomething()
方法的参数更改为doSomething(Bar bar)
时,它成功创建了模拟。
最后一个奇怪的事情是,它不会在其他工作站上重现。
答案 0 :(得分:1)
经过多次试验和错误,这些机器之间的唯一区别是JDK版本。在没有工作的机器上我们有1.8.0_05。更新到1.8.0_45修复了它。