Mockito предлагает:Mockito: Список Matchers с дженериков
when(mock.process(Matchers.any(List.class)));
Как избежать предупреждения, если process
берет List<Bar>
вместо этого?
Mockito предлагает:Mockito: Список Matchers с дженериков
when(mock.process(Matchers.any(List.class)));
Как избежать предупреждения, если process
берет List<Bar>
вместо этого?
Для Java 8 и выше, это легко:
when(mock.process(Matchers.anyList()));
Для Java 7 и ниже, компилятор должен немного помочь. Используйте anyListOf(Class<T> clazz)
:
when(mock.process(Matchers.anyListOf(Bar.class)));
В дополнение к 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)
было изменено на "any instanceof
Foo", но any()
по-прежнему означает "любое значение, включая null
".
ПРИМЕЧАНИЕ: Вышеуказанное перешло на ArgumentMatchers в более новые версии Mockito, чтобы избежать столкновения имен с org.hamcrest.Matchers
. Старые версии Mockito должны будут продолжать использовать org.mockito.Matchers
, как указано выше.
'' 'Matchers.any()' '' очень удобно! – MBach
Матчи теперь устарели, вот информация от mockito «Используйте ArgumentMatchers. Этот класс теперь устарел, чтобы избежать столкновения имени с классом Hamcrest org.hamcrest.Matchers. Этот класс, вероятно, будет удален в версии 3.0». https://static.javadoc.io/org.mockito/mockito-core/2.7.21/org/mockito/Matchers.html – oddmeter
@JeffBowman нет пота, просто оставляя записку для других :) – oddmeter
Примечание: это устарело в Mockito 2. * и будет удалено в Mockito 3. Устарело, потому что Java 8-компилятор может вывести тип сейчас. – Kip
@Kip спасибо, я обновил ответ – artbristol
@artbristol Знаете ли вы, что если anySet() должен работать так же, как anyList()? Я нахожусь в Java 8, и в Eclipse IDE выдается предупреждение. –