单元测试框架通常会提供非常好的断言失败消息(我使用的是 gtest)来描述特定测试的预期值和实际值。此外,您知道函数调用的来源,因为您正在测试类的接口。
相比之下,assert
当在实现中用作健全性检查时,会提供一些但更隐秘的信息。例如,我现在正在研究的那个。.
Assertion failed: (latency > std::chrono::milliseconds(0)), function setLatency, file /path/to/my.cpp line 71
所以我知道哪个断言失败了,但我不知道导致它失败的值是什么,更重要的是,我不知道setLatency
调用哪个有问题的函数。
一个简单的解决方案通常是放到调试器中,但在这种情况下我不能这样做。是否可以从类的实现中获得更具描述性的断言消息?我怎样才能做到这一点?如有必要,我不介意使用 3rd 方库。