如何匹配传递给Class <t>参数的null与Mockito </t>

时间:2012-10-03 11:33:07

标签: java unit-testing mocking mockito

我有这样的方法:

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

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

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

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

3 个答案:

答案 0 :(得分:138)

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

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

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

答案 1 :(得分:24)

David Wallace的回复更新:

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

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

Deprecated,将在Mockito 3.0中删除

使用

public static <T> T isNull()

代替

答案 2 :(得分:17)

这对我有用:

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