【发布时间】:2011-02-05 10:41:23
【问题描述】:
我一直在向一些遗留的 C++ 代码添加单元测试,并且我遇到过许多情况,其中函数内部的断言在单元测试运行期间会被触发。我遇到的一个常见习惯用法是函数接受指针参数并在参数为 NULL 时立即断言。
我可以通过在单元测试时禁用断言来轻松解决这个问题。但是我开始怀疑单元测试是否应该减轻对运行时断言的需求。这是一个正确的评估吗?单元测试是否应该通过在管道中更快地发生来替换运行时断言(即:错误在失败的测试中而不是在程序运行时被捕获)。
另一方面,我不喜欢在代码中添加软失败(例如if (param == NULL) return false;)。运行时断言至少可以在单元测试遗漏错误的情况下更轻松地调试问题。
【问题讨论】:
-
请注意,在 Windows 上,Boost.Test 允许将断言作为异常捕获,因此触发的断言通常只会使测试失败,也可以被捕获,例如不失败。
标签: c++ unit-testing assert