Ste*_*ett 2 java generics mockito java-7
我正在使用Mockito测试这样的方法:
myMethod(String s, List<Integer> i);
Run Code Online (Sandbox Code Playgroud)
我用这个电话:
doReturn(foo).when(bar).myMethod(anyString(), isNull(List.class))
Run Code Online (Sandbox Code Playgroud)
使用该isNull(Class<?> class)方法是我的问题。因为我使用的是Matcher的anyString(),所以我不能仅仅通过null。
现在type safety,由于使用了通用类,我得到一个警告。我可以使用@SuppressWarning注释来摆脱它。
这个问题比Mockito与Java有关,但我想提供用例,在这里我不能仅仅使用List的实例将其传递给方法。
我首先想知道的是一种摆脱警告的干净方法。由于强制转换(泛型,类型为橡皮擦)不是选项。
使用通用版本Matchers.eq():
doReturn(foo).when(bar).myMethod(anyString(), Matchers.<List<Integer>> eq(null))
Run Code Online (Sandbox Code Playgroud)
使用Java 7,您必须添加类型见证程序<List<Integer>>以帮助编译器弄清楚这一切。在Java 8中,这不是必需的。有关该特定方面的更多信息,请参阅此页面的底部。