【发布时间】:2016-08-20 10:45:23
【问题描述】:
假设我有以下两个功能:
add_five (number) -> number + 2
add_six (number) -> add_five(number) + 1
如您所见,add_five 有一个错误。
如果我现在测试add_six,它会失败,因为结果不正确,但代码是正确的。
假设您有一棵相互调用的函数树,很难找出哪个函数包含错误,因为所有函数都会失败(而不仅仅是有错误的函数)。
所以我的问题是:单元测试是否应该因为不正确的行为(错误的结果)或不正确的代码(错误)而失败。
【问题讨论】:
-
没有测试可以执行魔术来检测不正确的代码。它所能做的就是检测不正确的行为。
-
是否可以说在这种情况下单元测试并不能真正帮助发现错误?它告诉您存在无效行为,但不会直接告诉您错误在哪里。
-
不正确的行为表明存在错误,而不是位置。
标签: unit-testing functional-programming elixir