Mockito: список совпадений с дженериками

Mockito предлагает:

<code>when(mock.process(Matchers.any(List.class)));
</code>

Как избежать предупреждения, еслиprocess занимаетList<Bar> вместо?

Ответы на вопрос(3)

До Java 8 (версии 7 или 6) я использовал новый метод ArgumentMatchers.anyList:

import static org.mockito.Mockito.*;
import org.mockito.ArgumentMatchers;

verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());

В дополнение кanyListOf выше, вы всегда можете указать дженерики явно, используя этот синтаксис:

when(mock.process(Matchers.<List<Bar>>any(List.class)));

В Java 8 теперь допускается вывод типов на основе параметров, поэтому, если вы используете Java 8, это также может работать:

when(mock.process(Matchers.any()));

Помните, что ниany() ниanyList() будет применять любые проверки, в том числе проверки типа или нуля. В Mockito 2.x,any(Foo.class) было изменено на "любой"instanceof Foo & quot ;, ноany() означает "любое значение, включаяnull& Quot ;.

ПРИМЕЧАНИЕ. Вышеуказанное переключилось наArgumentMatchers в более новых версиях Mockito, чтобы избежать конфликта имен сorg.hamcrest.Matchers, Старые версии Mockito нужно будет продолжать использоватьorg.mockito.Matchers как указано выше.

 04 апр. 2017 г., 20:51
Matchers теперь устарели, вот информация от mockito. Используйте ArgumentMatchers. Этот класс теперь не рекомендуется, чтобы избежать конфликта имен с классом Hamcrest org.hamcrest.Matchers. Этот класс, скорее всего, будет удален в версии 3.0. & Quot;static.javadoc.io/org.mockito/mockito-core/2.7.21/org/mockito/…
 12 мая 2016 г., 10:58
Matchers.any() это очень удобно!
 04 апр. 2017 г., 20:59
@oddmeter Изменения сделаны.
 04 апр. 2017 г., 20:53
@JeffBowman нет пота, просто оставляю записку для других :)
Решение Вопроса

Для Java 8 и выше это просто:

when(mock.process(Matchers.anyList()));

Для Java 7 и ниже компилятору нужна небольшая помощь. использованиеanyListOf(Class<T> clazz):

when(mock.process(Matchers.anyListOf(Bar.class)));
 10 дек. 2016 г., 12:41
@Kip спасибо. Я обновил ответ
 14 июл. 2017 г., 15:47
@artbristol Знаете ли вы, если с anySet () должен работать так же, как anyList ()? Я нахожусь в Java 8, и в Eclipse IDE выдается предупреждение
 29 нояб. 2016 г., 01:02
Примечание: это устарело в Mockito 2. * и будет удалено в Mockito 3. Устаревшее, потому что компилятор Java 8 теперь может определять тип.
 26 окт. 2017 г., 02:37
Лучше использоватьanyListOf, Даже еслиanyList работает, выдает предупреждение.

Ваш ответ на вопрос