我正在使用 mockito 来测试一个通用方法。但是当我运行 junit-test 时,我得到了一个 ClassCastException。
被测方法如下所示:
public ExampleClass {
public <E> E randomObject(List<E> list) {
E e = list.get(0);
return e;
}
}
模拟看起来像这样:
ExampleClass exampleMock = mock(ExampleClass.class);
List listMock = mock(List.class);
when(exampleMock.randomObject(Matchers<List<String>any())).thenReturn("Hello");
when(exampleMock.randomObject(Matchers.List<Integer>any())).thenReturn(20);
异常出现在when-method的第二个定义中。看起来该方法只接受一种不可更改的类型。但为什么会这样呢?当我在普通 java 中使用具有两种不同类型的泛型方法时,不会出现异常。
有人可以帮忙吗?