Mockito: Lista de emparejadores con genéricos
Mockito ofrece:
when(mock.process(Matchers.any(List.class)));
¿Cómo evitar la advertencia si process
toma un List<Bar>
en su lugar?
3 answers
Para Java 8 y superior, es fácil:
when(mock.process(Matchers.anyList()));
Para Java 7 y versiones posteriores, el compilador necesita un poco de ayuda. Use anyListOf(Class<T> clazz)
:
when(mock.process(Matchers.anyListOf(Bar.class)));
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-12-10 11:41:00
Además de anyListOf
anterior, siempre puede especificar genéricos explícitamente usando esta sintaxis:
when(mock.process(Matchers.<List<Bar>>any(List.class)));
Java 8 permite recientemente la inferencia de tipos 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 ninguna comprobación, incluidas las comprobaciones de tipo o null. En Mockito 2.x, any(Foo.class)
se cambió para significar "cualquier instanceof
Foo", pero any()
todavía significa "cualquier valor incluyendo null
".
NOTA: Lo anterior ha cambiado a ArgumentMatchers en versiones más recientes de Mockito, para evitar una colisión de nombres con org.hamcrest.Matchers
. Las versiones anteriores de Mockito tendrán que seguir usando org.mockito.Matchers
como antes.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-04 18:58:41
Antes de Java 8 (versiones 7 o 6) utilizo el nuevo método ArgumentMatchers.AnyList:
import static org.mockito.Mockito.*;
import org.mockito.ArgumentMatchers;
verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-18 12:41:21