gpt4 book ai didi

c++ - 断言在具有单元测试的 C++ 程序中的作用是什么?

转载 作者:IT老高 更新时间:2023-10-28 22:32:13 27 4
gpt4 key购买 nike

我一直在向一些遗留的 C++ 代码添加单元测试,并且我遇到过许多场景,其中函数内部的断言在单元测试运行期间会被触发。我遇到的一个常见习惯用法是函数接受指针参数并在参数为 NULL 时立即断言。

我可以通过在单元测试时禁用断言来轻松解决这个问题。但是我开始怀疑单元测试是否应该减轻对运行时断言的需求。这是一个正确的评估吗?单元测试是否应该通过在管道中更快地发生来替换运行时断言(即:错误在失败的测试中而不是在程序运行时被捕获)。

另一方面,我不喜欢在代码中添加软失败(例如 if (param == NULL) return false;)。运行时断言至少可以在单元测试遗漏错误的情况下更容易地调试问题。

最佳答案

A runtime assert at least makes it easier to debug a problem in case a unit test missed a bug.

这是一个非常基本的观点。单元测试并不是要取代断言(恕我直言,这是生成高质量代码的标准部分),它们是为了补充它们。

其次,假设你有一个函数 Foo 断言它的参数是有效的。
在您对 Foo 的单元测试中,您可以确保只提供有效参数,这样您就认为自己没问题。
6 个月后,其他开发人员将从一些新代码(可能有也可能没有单元测试)中调用 Foo,到那时你会非常感激你把这些在那里断言。

关于c++ - 断言在具有单元测试的 C++ 程序中的作用是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2595701/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com