Mockito.anyLong()做什么?

时间:2014-01-03 08:32:21

标签: java junit mockito

我必须测试一个以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.

提前致谢。

2 个答案:

答案 0 :(得分:4)

它是匹配器,而不是测试值生成器。它用于说“我希望这个存根方法可以被调用任何long,Long或null,但我不关心确切的值”。

答案 1 :(得分:2)

如果您有long参数并且您设法将null作为参数传递给mock,则会有NPE。如果Long参数anyLong()允许Longnulllong将由编译器自动装箱到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