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

链接地址: http://www.djcxy.com/p/30573.html

上一篇: Mockito: List Matchers with generics

下一篇: Changing validation range programmatically (MVC3 ASP.NET)