Mockito - ClassCastException when using Collection



当使用获取集合作为参数的方法模拟类时,我遇到了一个令人费解的问题。

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)时,它成功地创建了模拟。

最后一件奇怪的事情是,它不会在其他工作站上重现。

经过多次试验和错误,机器之间的唯一区别是JDK版本。在它不工作的机器上,我们有 1.8.0_05。更新到 1.8.0_45 修复了它。

最新更新