此测试不起作用
assertThat(bundle.getMyObj(), equalTo(Optional.absent()));
一开始我只使用一个共同的对象。 (没有使用可选的<>)
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)));
答案 0 :(得分:1)
此消息:
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())