当我有以下自动化测试用例时:
我该如何修改代码以便显示异常的名称(
我在Linux上使用 boost 1.44 和 gcc 4.4.5。
class MyException: virtual public boost::exception,
virtual public std::exception
{
};
BOOST_AUTO_TEST_CASE(ExceptionTest)
{
BOOST_THROW_EXCEPTION(MyException());
}
运行测试会得到以下结果:
ExceptionTest.cpp(14): fatal error in "void ExceptionTest::test_method()":
std::exception: std::exception
我该如何修改代码以便显示异常的名称(
MyException
)和boost::diagnostic_information()
,而不是std::exception
?我尝试将自己的异常翻译器注册到执行监视器中,但似乎在尝试调用已注册的翻译器之前就处理了std::exception
。我在Linux上使用 boost 1.44 和 gcc 4.4.5。
boost::unit_test::unit_test_monitor.register_exception_translator<MyException>(&handler);
等多个位置。) - rvestd::exception
的虚继承是因为没有它,BOOST_THROW_EXCEPTION
将无法编译,并且根据boost::exception文档的说法,这是一件“好事情”:http://www.boost.org/doc/libs/1_46_0/libs/exception/doc/frequently_asked_questions.html - rve