我真的很喜欢 Minitest,它很简单,但我不明白为什么我应该使用
assert_equal
而不是 assert
和 ==
运算符。
如果我查看实现,
assert_equal
方法的作用与我使用等于运算符所说的完全相同。
为什么我需要中间这一步而不是直接使用它?
我还认为仅仅因为那里的
equal
就不会更具可读性,因为 ==
非常自我解释。
通常,当您喜欢清晰的失败消息时,您需要
assert_equal
。
当您写下
assert a == b
并且测试因任何原因失败时,该消息只会显示类似于 Assertion failed
的内容。
另一方面,如果您使用 assert_equal a, b
,失败将显示类似 Expected a to be equal to b
的消息,这会为您提供有关测试失败原因的更多详细信息。
我认为这只是一个选择的问题,对我来说
assert_equal
看起来比使用==
更具可读性
assert_equal expect, actual
assert_equal
将其参数写入临时文件(通过调用 Minitest 的 diff
)以生成输入的差异。重复调用此函数(例如,在循环中)时,这可能会导致大量开销。
我发现这占给定测试套件运行时间的高达 50%。将
assert
与 ==
结合使用可消除此成本。