Phi*_*ayo 160 java generics warnings matcher mockito
Mockito提供:
when(mock.process(Matchers.any(List.class)));
Run Code Online (Sandbox Code Playgroud)
如何避免警告,如果process需要List<Bar>呢?
art*_*tol 263
对于Java 8及更高版本,它很容易:
when(mock.process(Matchers.anyList()));
Run Code Online (Sandbox Code Playgroud)
对于Java 7及更低版本,编译器需要一些帮助.用途anyListOf(Class<T> clazz):
when(mock.process(Matchers.anyListOf(Bar.class)));
Run Code Online (Sandbox Code Playgroud)
Jef*_*ica 14
除此之外anyListOf,您始终可以使用以下语法明确指定泛型:
when(mock.process(Matchers.<List<Bar>>any(List.class)));
Run Code Online (Sandbox Code Playgroud)
Java 8新允许基于参数的类型推断,因此如果您使用Java 8,这可能也有效:
when(mock.process(Matchers.any()));
Run Code Online (Sandbox Code Playgroud)
请记住,既any()不会也anyList()不会应用任何检查,包括类型或空检查.在Mockito 2.x中,any(Foo.class)改为"任何instanceofFoo",但any()仍然意味着"包括任何价值null".
注意:上面已经在较新版本的Mockito中切换到ArgumentMatchers,以避免名称冲突org.hamcrest.Matchers.较旧版本的Mockito需要继续使用org.mockito.Matchers如上所述.
Mig*_*lla 10
在 Java 8(版本 7 或 6)之前,我使用新方法 ArgumentMatchers.anyList:
import static org.mockito.Mockito.*;
import org.mockito.ArgumentMatchers;
verify(mock, atLeastOnce()).process(ArgumentMatchers.<Bar>anyList());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
111660 次 |
| 最近记录: |