【问题标题】:Order of argument in both Junit and HamcrestJunit 和 Hamcrest 中的论证顺序
【发布时间】:2016-06-21 05:37:53
【问题描述】:

我在网上看到如下代码sn-p:

如前所述,Junit(expected, actual) 和 Hamcrest(actual, expected) 的参数顺序颠倒了。

我想知道它背后的原因是什么?参数顺序对于 Junit 或 Hamcrest 真的很重要吗?如果有人不小心把参数放错了顺序,会不会影响结果?

【问题讨论】:

  • 在 junit 的情况下,当测试用例失败时,您会收到相反的消息,说期待“abc”并得到“pqr”,实际上反之亦然。但实际上它没有任何区别。

标签: java unit-testing testing junit hamcrest


【解决方案1】:

嗯,对于 Hamcrest,类型实际上是不同的:左侧是 Object,右侧是 Matcher。

对于 jUnit,区别在于“仅”语义 - 即,如果失败,您会收到误导性的断言消息。

Assertj(添加另一个示例)使用流利风格的界面:

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

【讨论】:

    【解决方案2】:

    当您意识到您需要使用 assertThat 时,很多困惑就会消失。这个断言只是做所有其他人所做的事情;它以更好的方式做到了。

    不,顺序并不重要。最后,这是关于匹配两个值。如果这两个值相同,则不必在意。

    唯一的问题:如果你颠倒了值,那么修复损坏的测试可能会更难 - 因为你应该更好地理解 actualexpected 值之间的区别。

    最后:使用 assertThat 时有一个简单的助手。它需要 A(实际),然后是 E(预期)。非常按字母顺序排列。

    【讨论】:

    • 我喜欢'finally'部分
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-16
    • 1970-01-01
    • 2015-01-02
    相关资源
    最近更新 更多