有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java单元测试:我应该使用null还是可选的。返回()中的空()?

我测试一个Spring Data JPA方法,如下所示:

Optional<Country> findByUuid(final UUID uuid);

当我为这个方法编写单元测试时,我可以通过在thenReturn()方法中使用返回值nullOptional.empty()来测试它

when(demoRepository.findByUuid(uuid)).thenReturn(null);

// or

when(demoRepository.findByUuid(uuid)).thenReturn(Optional.empty());

那么,哪一种方法更合适呢


共 (1) 个答案

  1. # 1 楼答案

    后者

    当一个方法返回Optional时,无论出于何种目的,都会隐式地假设它不可为null。如果调用方不仅要检查是否为空,还要检查可选值中是否有值,那么调用返回可选值的方法的所有代码都会非常冗长

    客户端代码不应检查可选返回是否为空。因此,使用前者极有可能产生空指针异常