Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ BOOST_CHECK_CLOSE的一个版本,处理绝对差异_C++_Unit Testing_Boost Test - Fatal编程技术网

C++ BOOST_CHECK_CLOSE的一个版本,处理绝对差异

C++ BOOST_CHECK_CLOSE的一个版本,处理绝对差异,c++,unit-testing,boost-test,C++,Unit Testing,Boost Test,是否有一个版本的BOOST_CHECK_CLOSE可以处理绝对差异而不是百分比?在某些情况下,绝对差异更有意义,例如,当我们处理金钱时(是的,我知道double不是最好的类型),我们可能会检查答案是否精确到最接近的便士。还有许多其他的例子 使用BOOST\u CHECK\u SMALL之类的工具自己编写其中一个是相当简单的,但我认为正确的宏的详细输出会使错误更容易跟踪。TBH,我不理解BOOST\u CHECK\u SMALL的问题: double val = func(); //should

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


使用BOOST\u CHECK\u SMALL之类的工具自己编写其中一个是相当简单的,但我认为正确的宏的详细输出会使错误更容易跟踪。

TBH,我不理解BOOST\u CHECK\u SMALL的问题:

double val = func(); //should be between 95 and 105
BOOST_CHECK_SMALL(val - 100, 5);
但是,如果它看起来更像CHECK_CLOSE,那么您必须像boost那样滚动自己的宏-只需深入到相应的标题中即可。您可能需要添加自己的检查类型枚举值,创建一个谓词并在宏中使用它

或者使用那些看起来确实比“检查”要丑陋得多的东西。 或者简单地使用BOOST_CHECK和一个返回谓词的自定义函数——但我认为这太过分了