【问题标题】:A version of BOOST_CHECK_CLOSE that deals with absolute differences处理绝对差异的 BOOST_CHECK_CLOSE 版本
【发布时间】:2013-02-21 14:43:03
【问题描述】:
是否有一个 BOOST_CHECK_CLOSE 版本适用于绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如当我们使用金钱时(是的,我知道 double 不是最好的类型),我们可能会检查答案是否适合最接近的一分钱。还有很多其他的例子。
使用例如自己编写其中一个是相当微不足道的。 BOOST_CHECK_SMALL,但我右宏的详细输出会使错误更容易追踪。
【问题讨论】:
标签:
c++
unit-testing
boost-test
【解决方案1】:
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 与返回谓词的自定义函数一起使用——但我认为这太过分了。