Mockito:列出泛型的匹配器
Mockito提供:
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)
被改为“任何Foo的instanceof
”,但any()
仍然意味着“任何包含null
”。
注意:以上版本已转换为较新版本的Mockito中的ArgumentMatchers,以避免与org.hamcrest.Matchers
发生名称冲突。 较早版本的Mockito需要继续使用org.mockito.Matchers
。
上一篇: Mockito: List Matchers with generics
下一篇: Changing validation range programmatically (MVC3 ASP.NET)