BOOST_CHECK_CLOSE的一个版本,用于处理绝对差异

时间:2013-02-21 14:43:04

标签: c++ unit-testing boost-test

BOOST_CHECK_CLOSE的版本是否与绝对差异有效而不是百分比?在某些情况下,绝对差异更有意义,例如:当我们用钱工作时(是的,我知道双重不是最好的类型),我们可能会检查答案对最近的便士来说是好的。还有很多其他例子。

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

1 个答案:

答案 0 :(得分:5)

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