gpt4 book ai didi

java - 使用 hamcrest 验证 Optional 的最佳实践

转载 作者:行者123 更新时间:2023-11-30 10:26:50 25 4
gpt4 key购买 nike

这个测试不工作

assertThat(bundle.getMyObj(), equalTo(Optional.absent()));

一开始我只是用一个普通的对象。 (还没有使用 optional<>)

private MyObj myObj;

测试看起来像这样

assertThat(myBundle.getMyObj(), nullValue());

我将 myObj 更改为

private Optional<MyObj> myObj = Optional.absent();

然后我把我的测试改为

assertThat(bundle.getTracking(), equalTo(Optional.absent()));

然后我得到一个错误

java.lang.AssertionError: 
Expected: <Optional.absent()>
but: was <Optional.of(com.my.package.MyObj@2a9627bc)>
Expected :<Optional.absent()>

Actual :<Optional.of(com.my.package.MyObj@2a9627bc)>

我也尝试了下面的这段代码,但出现了编译错误

assertThat(myBundle.getMyObj(), equalTo(Optional.of(MyObj)));

最佳答案

这条消息:

java.lang.AssertionError: 
Expected: <Optional.absent()>
but: was <Optional.of(com.my.package.MyObj@2a9627bc)>
Expected :<Optional.absent()>
Actual :<Optional.of(com.my.package.MyObj@2a9627bc)>

表示您的 Optional 对象不为空。似乎 bundle.getTracking() 正在返回可选的非空

此外,如果您想在测试中检查可选是否为空,我建议您使用方法 isPresent()

代替 assertThat(bundle.getTracking(), equalTo(Optional.absent())) 只需使用 assertTrue(bundle.getTracking().isPresent())

关于java - 使用 hamcrest 验证 Optional 的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45566508/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com