java generics warnings mockito matcher

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