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)));