如何使用升压单元的升压测试

How can I use Boost Test with Boost Units

本文关键字:测试 单元 何使用      更新时间:2023-10-16

我希望它能正确编译:

#include <boost/test/unit_test.hpp>
#include <boost/units/quantity.hpp>
#include <boost/units/systems/angle/degrees.hpp>
using boost::units::quantity;
using boost::units::degree::degrees;
using boost::units::degree::plane_angle;
int main() {
    quantity<plane_angle> q1 = 15 * degrees;
    BOOST_CHECK_CLOSE(q1, 15 * degrees, 1e-8);
    return 0;
}

不幸的是,这会在GCC中产生数百行错误。

我当然可以这样做。

BOOST_CHECK_CLOSE(q1.value(), 15, 1e-8);

但我希望在测试用例中保持单元的明确性,以防其他人决定更改q1的单元类型。

有什么方法可以保持单元的明确性吗?

一个选项是将相等的值除以并与1:进行比较

BOOST _CHECK_CLOSE(q1/(15*度),1,1e-8);

将boost::units::quantity除以同一类型时,最终得到一个无量纲的量,该量可以隐式转换为两倍。