我必须测试一个以Long为参数的方法。我必须测试Long的任何值以及它是否为null。 Mockito.anyLong()会自动测试这两种情况吗? null和Long的任何值?或者随机选取任何长值和null之间的值? 考虑到这些是关于anyLong()的文档:
anyLong
public static long anyLong()
any long, Long or null. See examples in javadoc for Matchers class Returns: 0.
提前致谢。
答案 0 :(得分:4)
它是匹配器,而不是测试值生成器。它用于说“我希望这个存根方法可以被调用任何long,Long或null,但我不关心确切的值”。
答案 1 :(得分:2)
如果您有long
参数并且您设法将null
作为参数传递给mock,则会有NPE。如果Long
参数anyLong()
允许Long
和null
,long
将由编译器自动装箱到Long
。试试这个
public class X {
long x(Long arg) {
return 0;
}
public static void main(String[] args) {
X x = mock(X.class);
when(x.x(anyLong())).thenReturn(0L);
System.out.println(x.x(null));
}
}
它会打印
0
0