一尘不染

JUnit消息是否应该说明成功或失败的条件?

java

我可以使用以下两种方式之一编写断言消息。说明成功:

assertEquals( "objects should be identical", expected, actual );

或说明被破坏的条件:

assertEquals( "objects aren't identical", expected, actual );

JUnit中是否专门为此提供标准?如果没有,双方的论点是什么?

PS:我在网上看到的文章都在没有说明的情况下进行了演示,因此仅说“搜索Google”是无法解决的!

[更新]

每个人都对我用过的事实感到困惑assertEquals,因此该消息可能毫无用处。但这当然只是因为我想简单地说明这个问题。

因此,想象一下它是:

assertTrue( ... big long multi-line expression ... );

消息有用的地方。


阅读 165

收藏
2020-12-03

共1个答案

一尘不染

至少对于,我很少打扰消息assertEquals。任何明智的测试跑步者都会向您解释您正在使用assertEquals的东西,以及意味着相等的两件事。您的任何一条消息都没有提供更多的信息。

我通常会发现单元测试失败是暂时性的-
我会迅速找出问题所在并加以解决。“找出问题所在”通常涉及足够的细节,以至于单个消息不会有太大的不同。考虑“通过收到一条消息节省的时间”与“花费在思考消息上的时间”
:)

编辑:好的,在一种情况下,我 可能会 使用一条消息:当文本中存在一个紧凑的描述时,该描述从对象的字符串表示中并不明显。

例如:比较以毫秒存储的日期时,“预计日期为12月1日”。

我不会担心您如何准确地表达它:只需确保从消息中可以明显看出您的意思。“应该是”或“不是”都可以-只是“ 12月1日”就不明显了。

2020-12-03