在对象或集合上使用assertEquals()时,我缺少良好的失败消息。失败时,错误消息使用toString()方法打印出预期对象和实际对象。 它不会确切地打印导致不平等的原因。当然,在比较两个集合时,AssertionError附带的消息对于弄清楚什么是错误是没用的或耗时的。
以下是我不想使用的两种可能的解决方案:
使用equals时是否存在具有此类日志记录的框架?
是否有最佳实践来处理此问题(或者首先避免使用这种问题)?
答案 0 :(得分:0)
Spock framework提供了这种功能。您可以将任何表达式用作断言,它将准确打印失败的原因:
assert stack.size() == 2 // this is your assertEquals
你得到:
Condition not satisfied:
stack.size() == 2
| | |
| 1 false
[push me]
我们现在已经在所有项目中使用Spock代替JUnit,因为它非常方便。