Mockito oferece:
when(mock.process(Matchers.any(List.class)));
Como evitar o aviso se processleva um em List<Bar>vez disso?
Mockito oferece:
when(mock.process(Matchers.any(List.class)));
Como evitar o aviso se processleva um em List<Bar>vez disso?
Respostas:
Para Java 8 e superior, é fácil:
when(mock.process(Matchers.anyList()));
Para Java 7 e abaixo, o compilador precisa de um pouco de ajuda. Use anyListOf(Class<T> clazz):
when(mock.process(Matchers.anyListOf(Bar.class)));
anyListOf. Mesmo que anyListfuncione, emite um aviso.
anyListOfestá obsoleto, por isso é melhor NÃO usá-lo. Exemplo para Java 8 não funciona em caso de sobrecarga de método, por exemplo, se você tem um método aceitar 2 listas diferentes: List<DBEntity>e List<DTO>eu já resolveu este problema utilizando ArgumentMatcherscom genérica:when(adapter.adapt(ArgumentMatchers.<DTO>anyList())).thenCallRealMethod();
Além do anyListOfacima, você sempre pode especificar genéricos explicitamente usando esta sintaxe:
when(mock.process(Matchers.<List<Bar>>any(List.class)));
O Java 8 permite recentemente a inferência de tipo com base em parâmetros; portanto, se você estiver usando o Java 8, isso também funcionará:
when(mock.process(Matchers.any()));
Lembre-se de que any()nem anyList()aplicarão nenhuma verificação, incluindo as de tipo ou nulas. No Mockito 2.x, any(Foo.class)foi alterado para significar "qualquer instanceofFoo", mas any()ainda significa "qualquer valor incluindo null".
NOTA: O item acima mudou para ArgumentMatchers nas versões mais recentes do Mockito, para evitar colisão de nomes org.hamcrest.Matchers. As versões mais antigas do Mockito precisarão continuar usando org.mockito.Matcherscomo acima.
Matchers.any()é muito conveniente!
Antes do Java 8 (versões 7 ou 6), eu uso o novo método ArgumentMatchers.anyList:
import static org.mockito.Mockito.*;
import org.mockito.ArgumentMatchers;
verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());