Matchers.isNull() 用于泛型 类

Use of Matchers.isNull() for generic classes

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

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

我用这个电话:

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

isNull(Class<?> class)方法的使用是我这里的问题。因为我使用了 anyString(),它是一个匹配器,所以我不能只传递 null.

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

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

我首先想知道的是摆脱警告的干净方法。因为转换(泛型,类型橡皮擦)不是一个选项。

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

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

使用 Java 7 你必须添加类型 witness <List<Integer>> 来帮助编译器解决这一切。在 Java 8 中,这不是必需的。有关该特定方面的更多信息,请参阅 this page.

的底部段落