У меня есть такие методы:
public <T> method(String s, Class<T> t) {...}
Мне нужно проверить, что null
передается во втором аргументе при использовании мачеров для других параметров, я делал это:
@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));
Но есть ли лучший способ (без подавления предупреждений)? T
представляет возвращаемый тип некоторого другого метода, который иногда является void
и в этих случаях передается null
.
Mockito имеет isNull
matcher, где вы можете передать имя класса. Поэтому, если вам нужно использовать его с другими матчерами, правильнее всего будет сделать следующее
verify(client).method(eq("String"),isNull(Class<?>.class));
Теперь этот метод устарел, смотрите ответ ниже для нового метода - https://stackoverflow.com/a/41250852/1348.
Обновление ответа Дэвида Уоллеса:
По состоянию на 2016-12, Java 8 и Mockito 2.3,
public static <T> T isNull(Class<T> clazz)
является Устаревшим и будет удален в Mockito 3.0
использовать
public static <T> T isNull()
вместо этого
Это работает для меня:
verify(client).method(eq("String"), eq((Class<?>) null));