2

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

使用例如 BOOST_CHECK_SMALL 自己编写其中一个是相当简单的,但我正确宏的详细输出会使错误更容易追踪。

4

1 回答 1

6

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 与返回谓词的自定义函数一起使用——但我认为这太过分了。

于 2013-02-21T15:40:27.793 回答