Mockito.any()传递与泛型的接口

问题

是否可以通过泛型传递接口的类型?

界面:

public interface AsyncCallback<T>

在我的测试方法中:

Mockito.any(AsyncCallback.class)

<ResponseX>放在后面或者用于.classdidnt工作。


#1 热门回答(202 赞)

有一种类型安全的方法:useArgumentMatchers.any()并使用以下类型对其进行限定:

ArgumentMatchers.<AsyncCallback<ResponseX>>any()

正如pierrefevrier在评论中提到的那样,Mockito的新版本就是这样

Matchers.<AsyncCallback<ResponseX>>any()

#2 热门回答(46 赞)

使用Java 8,由于增强的类型推断,你可以简单地使用any()(假设静态导入)而不使用参数或类型参数。编译器现在从目标类型(方法参数的类型)知道你实际意味着Matchers.<AsyncCallback<ResponseX>>any(),这是Java 8之前的解决方案。


#3 热门回答(11 赞)

我不得不采用以下机制来允许泛型:

import static org.mockito.Matchers.any;
List<String> list = any();
when(callMyMethod.getResult(list)).thenReturn(myResultString);

希望这有助于某人。