it-roy-ru.com

Как сопоставить нуль, переданный параметру класса <T> с Mockito

У меня есть такие методы:

public <T> method(String s, Class<T> t) {...}

Что мне нужно проверить, что null передается во второй аргумент при использовании совпадений для других параметров, я делал это:

@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));

Но есть ли лучший способ (без подавления предупреждений)? T представляет тип возврата некоторого другого метода, который иногда void и в этих случаях null передается.

71
blank

У Mockito есть isNull matcher , где вы можете передать имя класса. Так что, если вам нужно использовать его с другими сопоставителями, правильное решение

verify(client).method(eq("String"),isNull(Class<?>.class));

Теперь это устарело, см. Ответ ниже для нового метода - https://stackoverflow.com/a/41250852/1348

138
Dawood ibn Kareem

Обновление от ответа Дэвида Уоллеса:

По состоянию на 2016-12 гг. Java 8 и Mockito 2.3,

public static <T> T isNull(Class<T> clazz)

is устарело и будет удалено в Mockito 3.0

использование

public static <T> T isNull()

вместо

26
mike rodent

Это работает для меня:

verify(client).method(eq("String"), eq((Class<?>) null));
17
Eric