Mockito:使用泛型列出匹配器

2022-08-31 06:30:13

Mockito提供:

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

如何避免警告,如果采取一个代替?processList<Bar>


答案 1

对于 Java 8 及更高版本,这很简单:

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

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

when(mock.process(Matchers.anyListOf(Bar.class)));

答案 2

除上述内容外,您始终可以使用以下语法显式指定泛型:anyListOf

when(mock.process(Matchers.<List<Bar>>any(List.class)));

Java 8 最近允许基于参数进行类型推断,因此,如果您使用的是 Java 8,这可能也可以正常工作:

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

请记住,也不会应用任何检查,包括类型检查或空检查。在Mockito 2.x中,被更改为表示“任何Foo”,但仍然表示“任何值,包括”。any()anyList()any(Foo.class)instanceofany()null

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


推荐