【发布时间】:2015-06-16 06:28:20
【问题描述】:
我有一个想在单元测试中使用的枚举类:
enum class MyEnumClass
{
MyEntryA,
MyEntryB
};
我想如下使用它:
MyEnumClass myEnumValue = MyEnumClass::MyEntryA;
BOOST_CHECK_EQUAL(myEnumValue, MyEnumClass::MyEntryB);
但是我得到了这个错误,显然是因为 boost test 正在尝试输出值:
include/boost/test/test_tools.hpp:326:14: error: cannot bind 'std::ostream {aka std::basic_ostream<char>}' lvalue to 'std::basic_ostream<char>&&'
ostr << t; // by default print the value
^
添加丑陋的static_cast“解决”了问题:
BOOST_CHECK_EQUAL(static_cast<int>(myEnumValue), static_cast<int>(MyEnumClass::MyEntryB));
但我想避免对每个枚举类都这样做。我还想避免为每个枚举类定义 << 流运算符。
有没有更简单的方法来使用枚举类和 boost 测试?
或者其他单元测试框架有更好的方法来处理枚举类?
【问题讨论】:
标签: c++ boost-test enum-class