为什么断言字符串相等时assertThat无法正常运行?

时间:2019-07-12 09:15:31

标签: java string junit

所以这是一个相当简单的问题,我已经改用assertEquals来解决它,但只是想知道为什么它不起作用:

assertThat(list.get(0).getStringValue().equals("1234567811"));

在调试过程中检查了变量之后,即使在检索到的字符串不匹配的情况下,上一行也将被视为通过。

当我使用时:

 assertEquals(list.get(0).getStringValue(), "1234567811");

它可以正确拾取错误。

据我了解,assertThat也应对此起作用,所以我很好奇为什么不这样做?

谢谢

2 个答案:

答案 0 :(得分:3)

您需要具有此表格才能正常工作

assertThat(actual, is(equalTo(expected)));

所以应该是这样

assertThat(list.get(0).getStringValue(), is("1234567811"));

assertThat(list.get(0).getStringValue(), equalTo("1234567811"));

可以在这里阅读更多

https://objectpartners.com/2013/09/18/the-benefits-of-using-assertthat-over-other-assert-methods-in-unit-tests/

答案 1 :(得分:1)

AssertJ似乎使用了流利的方法,因此您需要做类似的事情

assertThat(list.get(0).getStringValue()).isEqualTo("1234567811");