Mockito提供:
when(mock.process(Matchers.any(List.class)));
如果process
取代List<Bar>
,如何避免警告?
答案 0 :(得分:248)
对于Java 8及更高版本,它很简单:
when(mock.process(Matchers.anyList()));
对于Java 7及更低版本,编译器需要一些帮助。使用anyListOf(Class<T> clazz)
:
when(mock.process(Matchers.anyListOf(Bar.class)));
答案 1 :(得分:13)
除了上面的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”,但any()
仍然表示“任何值,包括null
”。
注意:上述内容已在较新版本的Mockito中切换为ArgumentMatchers,以避免与org.hamcrest.Matchers
发生名称冲突。较旧版本的Mockito需要继续使用org.mockito.Matchers
,如上所述。
答案 2 :(得分:0)
在Java 8(版本7或6)之前,我使用新方法ArgumentMatchers.anyList:
GridPane