84

我有这样的方法:

public <T> method(String s, Class<T> t) {...}

在为其他参数使用匹配器时,我需要检查null是否传递给第二个参数,我一直在这样做:

@SuppressWarnings("unchecked")
verify(client).method(eq("String"), any(Class.class));

但是有没有更好的方法(没有抑制警告)?T表示某些其他方法的返回类型,void在这些情况下有时null会传入。

4

3 回答 3

144

Mockito 有一个isNullmatcher,你可以在其中传入类的名称。因此,如果您需要将它与其他匹配器一起使用,正确的做法是

verify(client).method(eq("String"),isNull(Class<?>.class));

现在已弃用,请参阅下面的答案以了解新方法 - https://stackoverflow.com/a/41250852/1348

于 2012-10-03T18:30:16.417 回答
40

大卫华莱士的回答更新:

截至 2016-12,Java 8 和 Mockito 2.3,

public static <T> T isNull(Class<T> clazz)

弃用并将在 Mockito 3.0 中删除

采用

public static <T> T isNull()

反而

于 2016-12-20T20:35:42.483 回答
20

这对我有用:

verify(client).method(eq("String"), eq((Class<?>) null));
于 2012-10-03T12:34:32.383 回答