将Matchers.isNull()用于泛型类

时间:2015-02-11 09:47:41

标签: java generics mockito java-7

我使用Mockito来测试这样的方法:

myMethod(String s, List<Integer> i);

我使用此电话:

doReturn(foo).when(bar).myMethod(anyString(), isNull(List.class))

使用isNull(Class<?> class)方法是我的问题。因为我使用anyString(),这是一个匹配器,所以我不能通过null

现在我收到type safety警告,因为使用了泛型类。我可以使用@SuppressWarning注释摆脱它。

这个问题与Mockito相关的Java更多,但我想提供用例,我不能只使用List的实例将其传递给方法。

我首先想知道的是一个清除警告的方法。因为铸造(通用,类型橡皮擦)不是一种选择。

1 个答案:

答案 0 :(得分:5)

使用Matchers.eq()的通用版本:

doReturn(foo).when(bar).myMethod(anyString(), Matchers.<List<Integer>> eq(null))

使用Java 7,您必须添加见证<List<Integer>>类型,以帮助编译器全面了解这一点。在Java 8中,这不是必需的。有关该特定方面的更多信息,请参阅this page的底部段落。