当我使用Boost.Test测试我的C ++类时,我的自定义异常被抛出(它们是我的类的实例),这是我在日志中看到的消息:
unknown location:0: fatal error in "testMethod": unknown type
这是非常没有信息的,我不知道如何教Boost.Test将我的异常转换为字符串并正确显示它。我的Exception
课程有operator string()
,但没有帮助。有任何想法吗?谢谢!
答案 0 :(得分:2)
我相信如果您的自定义异常类继承自std::exception
。
答案 1 :(得分:1)
您可能需要定义一个运算符<<在std命名空间中:
namespace std {
inline std::ostream& operator<<(std::ostream& os, const Exception& ex) {
os << ex.string();
return os;
}
}
这应该允许boost.test显示你的异常内容。
我发现这是必要的,以便可以使用BOOST_CHECK_EQUAL()等测试对象。</ p>
答案 2 :(得分:1)
除了使用 BOOST_CHECK_THROW 或类似
之外,您可以测试函数是否抛出指定的函数请参阅Boost.Test Docs:
class my_exception{};
BOOST_AUTO_TEST_CASE( test )
{
int i = 0;
BOOST_CHECK_THROW( i++, my_exception );
}
答案 3 :(得分:0)
我刚刚从std::string
继承了它,一切正常。