是否有BOOST_CHECK_CLOSE版本可以处理绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如当我们用钱工作时(是的,我知道double并不是最适合的类型),我们可能会检查答案是否最接近最便宜的一分钱。还有许多其他示例。

用例如BOOST_CHECK_SMALL,但是我右宏的详细输出将使错误更容易查找。

最佳答案

TBH,我不了解BOOST_CHECK_SMALL的问题:

double val = func(); //should be between 95 and 105
BOOST_CHECK_SMALL(val - 100, 5);

但是,如果它看起来更像CHECK_CLOSE,则必须像boost一样滚动自己的宏-只需钻入相应的标题即可。您可能必须添加自己的检查类型枚举值,创建一个谓词并在宏中使用它。

或者使用BOOST_CHECK_PREDICATE,它看起来确实比CHECK_SMALL难看得多,但有所不同。
或者只是将BOOST_CHECK与返回谓词的自定义函数一起使用-但我认为这太过分了。

关于c++ - BOOST_CHECK_CLOSE版本处理绝对差异,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15005052/

10-09 06:34