java - 对泛型类使用 Matchers.isNull()

标签 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(),它是一个 Matcher,所以我不能只传递 null .

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

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

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

最佳答案

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

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

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

关于java - 对泛型类使用 Matchers.isNull(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28451130/

相关文章:

java - 初学者 - 从另一个类打开方法

java - Linux下Java的虚拟内存使用,使用了太多内存

c# - 编写一个通用方法来替换一系列遗留 API 方法

java - 在泛型类中实现compareTo

mockito - 需要但未调用 : However, 与此模拟还有其他交互:

java - 如何让两个文本框占用3个:1 in SWT?

java - 如何访问位于字符串中定义的包中的静态类?

java - 在匿名内部类中使用 Java 泛型

scala - 在 Mockito 单元测试中抛出异常时,Future 的 .recover 不会被调用

java - Mockito 测试 java 8 lambda Consumer API