Mockito.any()通过与generics接口

是否有可能通过genericstypes的接口?

界面:

public interface AsyncCallback<T> 

在我的testing方法中:

 Mockito.any(AsyncCallback.class) 

<ResponseX>放在后面或者.class没有工作。

有一种types安全的方法:使用ArgumentMatchers.any()并使用types进行限定:

 ArgumentMatchers.<AsyncCallback<ResponseX>>any() 

作为评论中提到的pierrefevrier,与新版本的Mockito它是

 Matchers.<AsyncCallback<ResponseX>>any() 

使用Java 8,你可以简单地使用any() (假设静态导入),因为增强的types推断没有参数或types参数。 编译器现在从目标types(方法参数的types)知道你实际上是指Matchers.<AsyncCallback<ResponseX>>any() ,这是Java 8以前的解决scheme。

我不得不采取以下机制来考虑仿制药:

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

希望这有助于某人。

发表pierrefevrier评论作为答案,如果它出现在答案,而不是评论可能是有用的。

新版本的Mockito: (Matchers.<AsyncCallback<ResponseX>>any() Matchers (Matchers.<AsyncCallback<ResponseX>>any()

你可以投它,如果你喜欢join压制警告:

 @SuppressWarnings("unchecked") AsyncCallback<ResponseX> callback = Mockito.any(AsyncCallback.class) 

如果Java允许“generics”generics,他们可以有这样的方法,这就是你正在寻找的

 private static <T, E> T<E> mock(Class<T<E>> clazz) 

进一步thSoft的答案把合格的调用任何()在方法意味着我可以删除资格,因为返回types允许推断:

 private HashMap<String, String> anyStringStringHashMap() { return Matchers.any(); }