c++ - 处理绝对差异的 BOOST_CHECK_CLOSE 版本

标签 c++ unit-testing boost-test

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

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

最佳答案

老实说,我不明白 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/

相关文章:

c++ - 如何在自定义 API 上使用此函数

ios - 在 Swift 中对私有(private)变量进行单元测试

c++ - 访问 Boost 测试类 - test_results 和 results_collector

c++ - Boost::Test——Main() 的生成?

c++ - 从对象成员函数内部推迟删除操作的技术/设计模式?

c++ - 取消引用指针的程序集

c++ - 如何在 Linux 上通过 C++ 串行接口(interface)与 Arduino 通信?

python - Fudge mock datetime.now

mysql - 如何验证测试中的项目列表

c++ - 我可以将 BOOST_TEST_CASE 用于非静态类成员函数吗?