85 votes

Comment faire correspondre null passé en paramètre de Class<T> avec Mockito

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

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

Je dois vérifier que null est passé au deuxième argument lors de l'utilisation de matchers pour les autres paramètres, j'ai fait cela :

@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 transmise.

144voto

David Wallace Points 23911

Mockito dispose d'un isNull matcheur où vous pouvez indiquer le nom de la classe. Ainsi, si vous avez besoin de l'utiliser avec d'autres outils d'appariement, la chose à faire est

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

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

42voto

mike rodent Points 482

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

Depuis 2016-12, Java 8 et Mockito 2.3,

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

es Déclassé et sera supprimée dans Mockito 3.0

utiliser

public static <T> T isNull()

au lieu de

20voto

Eric Points 192

Cela fonctionne pour moi :

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X