为什么 Optional return 类型的单元测试失败?

Why unit test fail with Optional return type?

考虑使用 Mockito(版本 2.23.4)进行单元测试的以下代码。我不知道为什么测试失败。如果我将 a.get(null) 更改为 a.get(2L) 或任何 Long 值,测试将通过。那么,当 anyLong() 应该为空值工作时,为什么 null 会失败?

public class A {

    public Optional<Long> get(Long l) {
        return Optional.empty();
    }

    @Test
    public void test() {
        A a = Mockito.mock(A.class);
        Mockito.when(a.get(anyLong())).thenReturn(Optional.of(1L));
        Assert.assertTrue(a.get(null).isPresent());
    }

}

anyLong() 匹配器不再包含 NULL。请参阅 ArgumentMatchers.anyLong() 的文档:

Any long or non-null Long.

Since Mockito 2.1.0, only allow valued Long, thus null is not anymore a valid value.

这不同于Mockito 1.9.5

Any long, Long or null.