java - Mockito: enumera Matchers con genéricos
generics warnings (2)
Además de anyListOf
anterior, siempre puede especificar genéricos explícitamente utilizando esta sintaxis:
when(mock.process(Matchers.<List<Bar>>any(List.class)));
Java 8 nuevamente permite la inferencia de tipo basada en parámetros, por lo que si está utilizando Java 8, esto también puede funcionar:
when(mock.process(Matchers.any()));
Recuerde que ni any()
ni anyList()
aplicarán ningún control, incluido el tipo o las comprobaciones nulas. En Mockito 2.x, any(Foo.class)
se cambió para indicar "cualquier instanceof
Foo", pero any()
todavía significa "cualquier valor, incluido el null
".
NOTA: Lo anterior ha cambiado a ArgumentMatchers en las versiones más recientes de Mockito, para evitar una colisión de nombre con org.hamcrest.Matchers
. Las versiones anteriores de Mockito necesitarán seguir usando org.mockito.Matchers
como arriba.
Mockito ofrece:
when(mock.process(Matchers.any(List.class)));
¿Cómo evitar la advertencia si el process
toma una List<Bar>
?
Para Java 8 y superior, es fácil:
when(mock.process(Matchers.anyList()));
Para Java 7 y versiones inferiores, el compilador necesita un poco de ayuda. Use anyListOf(Class<T> clazz)
:
when(mock.process(Matchers.anyListOf(Bar.class)));