Я использую mockito для тестирования общего метода. Но я получаю исключение ClassCastException, когда я запускаю junit-test.ClassCastException с использованием Mockito для общего метода
Метод испытуемый выглядит следующим образом:
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);
Исключение появляется на втором определении когда-метод. Похоже, метод использует только один тип, который не подлежит изменению. Но почему это так? Когда я использую общий метод с двумя разными типами в простой java, Exception не будет отображаться.
Может кто-нибудь помочь?
Вы издеваетесь над ExampleClass, а также проверяете его? Ваша тестируемая система всегда должна быть реальным кодом, а не макетом, хотя вы могли бы издеваться над своими сотрудниками. (Издевательство над списком часто также является антипаттерном, хотя я бы понял, что это нужно для преодоления случайности. Часто вы можете просто передать реальную реализацию List вместо этого.) –