2012-05-09 27 views

Respuesta

208

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

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

+0

@Kip gracias He actualizado la respuesta – artbristol

+0

@artbristol ¿sabes si con anySet() debería funcionar igual que anyList()? Estoy en Java 8 y aparece una advertencia en Eclipse IDE –

10

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.

+2

'' 'Matchers.any()' '' es muy conveniente! – MBach

+0

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

+0

@JeffBowman no se preocupe, simplemente dejando una nota para los demás :) – oddmeter

Cuestiones relacionadas