Mockito ofrece:Mockito: Lista comparadores con los genéricos
when(mock.process(Matchers.any(List.class)));
Cómo evitar aviso si process
toma un List<Bar>
en su lugar?
Mockito ofrece:Mockito: Lista comparadores con los genéricos
when(mock.process(Matchers.any(List.class)));
Cómo evitar aviso si process
toma un List<Bar>
en su lugar?
Para Java 8 y superior, es fácil:
when(mock.process(Matchers.anyList()));
Para Java 7 y por debajo, el compilador necesita un poco de ayuda. Utilice anyListOf(Class<T> clazz)
:
when(mock.process(Matchers.anyListOf(Bar.class)));
Además de anyListOf
anterior, siempre se puede especificar explícitamente el uso de los genéricos esta sintaxis:
when(mock.process(Matchers.<List<Bar>>any(List.class)));
Java 8 de reciente permite la inferencia de tipos sobre la base de parámetros, por lo que si usted está usando Java 8, esto puede funcionar así:
when(mock.process(Matchers.any()));
Recuerde que ni any()
ni anyList()
w aplicará cualquier cheque, incluyendo el tipo o cheques nulos. En Mockito 2.x, any(Foo.class)
se cambió para indicar "cualquier instanceof
Foo", pero any()
todavía significa "cualquier valor, incluido null
".
NOTA: Lo anterior se 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 se indica anteriormente.
'' 'Matchers.any()' '' es muy conveniente! – MBach
Matchers ahora está en desuso, aquí está la información de mockito "Usar ArgumentMatchers. Esta clase ahora está en desuso para evitar un choque de nombres con la clase org.hamcrest.Matchers de Hamcrest. Esta clase probablemente se eliminará en la versión 3.0." https://static.javadoc.io/org.mockito/mockito-core/2.7.21/org/mockito/Matchers.html – oddmeter
@JeffBowman no se preocupe, simplemente dejando una nota para los demás :) – oddmeter
Nota: esto está obsoleto en Mockito 2. * y se eliminará en Mockito 3. Obsoleto porque el compilador de Java 8 puede inferir el tipo ahora. – Kip
@Kip gracias He actualizado la respuesta – artbristol
@artbristol ¿sabes si con anySet() debería funcionar igual que anyList()? Estoy en Java 8 y aparece una advertencia en Eclipse IDE –