185

Mockito 提供:

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

process如果取而代之,如何避免警告List<Bar>

4

4 回答 4

303

对于 Java 8 及更高版本,这很容易:

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

对于 Java 7 及更低版本,编译器需要一些帮助。使用anyListOf(Class<T> clazz)

when(mock.process(Matchers.anyListOf(Bar.class)));
于 2012-05-09T08:34:44.733 回答
21

除了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)改为表示“任何instanceofFoo”,但any()仍表示“任何值,包括null”。

注意:以上已在较新版本的 Mockito 中切换到ArgumentMatchers,以避免与org.hamcrest.Matchers. 旧版本的 Mockito 将需要继续使用org.mockito.Matchers如上。

于 2015-09-22T10:16:03.933 回答
11

在 Java 8(版本 7 或 6)之前,我使用新方法 ArgumentMatchers.anyList:

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

verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());
于 2018-06-18T12:41:21.697 回答
0

我需要anyList()一个类型化的 ArrayList,以下工作:

(ArrayList<Bar>) ArgumentMatchers.<Bar>anyList()
于 2022-02-14T13:50:34.260 回答