Я использую Mockito для тестирования такого метода:
myMethod(String s, List<Integer> i);
Я использую этот вызов:
doReturn(foo).when(bar).myMethod(anyString(), isNull(List.class))
Использование метода isNull(Class<?> class)
- вот моя проблема. Поскольку я использую anyString(), который является Matcher, я не могу просто передать null
.
Теперь я получаю предупреждение о type safety
из-за использования универсального класса. Я могу избавиться от него, используя @SuppressWarning
Annotation.
Эта проблема больше связана с Java, чем с Mockito, но я хотел бы предоставить пример использования, где я не могу просто использовать экземпляр List для передачи его методу.
То, что я хотел бы знать на первом месте, - это чистый способ избавиться от предупреждения. Поскольку кастинг (generics, eraser) не является вариантом.
Используйте общую версию Matchers.eq()
:
doReturn(foo).when(bar).myMethod(anyString(), Matchers.<List<Integer>> eq(null))
Используя Java 7, вы должны добавить свидетеля типа <List<Integer>>
чтобы помочь компилятору полностью понять это. В Java 8 это не требуется. Для получения дополнительной информации об этом конкретном аспекте см. Нижние абзацы этой страницы.