Tengo métodos como estos:
public <T> method(String s, Class<T> t) {...}
Que necesito verificar que null
se pasa al segundo argumento cuando utilizo comparadores para los otros parámetros, he estado haciendo esto:
@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));
Pero, ¿hay una forma mejor (sin suprimir las advertencias)? T
representa el tipo de retorno de algún otro método, que a veces void
y en estos casos null
se pasa.
java
unit-testing
mocking
mockito
blanco
fuente
fuente
null
(en lugar deany(Class.class)
)?Respuestas:
Actualización de la respuesta de David Wallace:
A partir de 2016-12, Java 8 y Mockito 2.3,
public static <T> T isNull(Class<T> clazz)
está obsoleto y se eliminará en Mockito 3.0
utilizar
public static <T> T isNull()
en lugar
fuente
(Integer) isNull()
lugar deisNull( Integer.class )
.org.mockito.Mockito.<String>isNull()
Mockito tiene un
isNull
comparador , donde puedes pasar el nombre de la clase. Entonces, si necesita usarlo con otros comparadores, lo correcto es hacerverify(client).method(eq("String"),isNull(Class<?>.class));
Esto ahora está en desuso, consulte la respuesta a continuación para el nuevo método: https://stackoverflow.com/a/41250852/1348
fuente
(String) isNull()
.isNull(String.class)
y(String) isNull()
son equivalentes. Elija lo que tenga más sentido para usted.Esto funciona para mi:
verify(client).method(eq("String"), eq((Class<?>) null));
fuente