Junit和Hamcrest中的参数顺序

e37o9pze  于 2022-11-11  发布在  其他
关注(0)|答案(2)|浏览(118)

我在网上看到了下面的代码片段:

如前所述,Junit(期望值,实际值)和Hamcrest(实际值,期望值)的参数顺序颠倒了。
我想知道这背后的原因是什么?参数顺序对Junit或Hamcrest真的很重要吗?如果有人不小心把参数顺序放错了,会影响结果吗?

mwngjboj

mwngjboj1#

嗯,Hamcrest的类型实际上是不同的:左手侧是Object,右手侧是Matcher
对于JUnit,区别仅在于语义,也就是说,在失败的情况下,您会得到一个误导性的Assert消息。
AssertJ(添加另一个示例)使用流畅风格的界面:

assertThat(actual).isEqualTo(expected);
assertThat(actual).isGreaterThan(expected);
...
cnh2zyt3

cnh2zyt32#

当你意识到你需要使用assertThat时,很多困惑就消失了。而且它做得更好。
不,顺序并不重要。最后,这是关于匹配两个值。如果两个值相同,你不在乎。
唯一的问题是:如果您反转了值,那么修复损坏的测试可能会更困难-因为您应该更好地理解 * 实际 * 值和 * 预期 * 值之间的差异。
最后:在使用assertThat时有一个简单的助手。它需要A(ctual),然后是E(expected)。非常按照字母顺序。

相关问题