我有一个想在单元测试中使用的枚举类:
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 测试?
还是其他单元测试框架有更好的方法来处理枚举类?