web-dev-qa-db-fra.com

Comment faire correspondre null passé au paramètre de classe <T> avec Mockito

J'ai des méthodes comme celles-ci:

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

J'ai besoin de vérifier que null est passé au deuxième argument lors de l'utilisation de correspondeurs pour les autres paramètres, je l'ai déjà fait:

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

Mais existe-t-il un meilleur moyen (sans supprimer les avertissements)? T représente le type de retour d'une autre méthode, qui est parfois void et dans ces cas, null est transmis.

74
blank

Mockito a un isNull matcher , où vous pouvez passer le nom de la classe. Donc, si vous avez besoin de l’utiliser avec d’autres partenaires, la bonne chose à faire est

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

Ceci est maintenant obsolète, voir la réponse ci-dessous pour la nouvelle méthode - https://stackoverflow.com/a/41250852/1348

141

Mise à jour de la réponse de David Wallace:

À compter de 2016-12, Java 8 et Mockito 2.3,

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

est obsolète et sera supprimé de Mockito 3.0

utilisation

public static <T> T isNull()

au lieu

27
mike rodent

Cela fonctionne pour moi:

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