Mockito - 使用Collection时的ClassCastException

时间:2016-02-28 10:34:34

标签: generics mockito

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

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

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

1 个答案:

答案 0 :(得分:1)

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