当我使用Boost.Test测试我的C++类时,我的自定义异常被抛出(它们是我的类的实例),这是我在日志中看到的消息:
unknown location:0: fatal error in "testMethod": unknown type它提供的信息非常少,而且我不知道如何教Boost.Test将异常转换为字符串并正确显示它。我的Exception类有operator string(),但它不起作用。有什么想法吗?谢谢!
发布于 2010-07-16 00:40:21
我相信如果您的自定义异常类继承自std::exception,它将会工作。
发布于 2010-07-16 00:37:22
您可能需要在std命名空间中定义一个operator<<:
namespace std {
inline std::ostream& operator<<(std::ostream& os, const Exception& ex) {
os << ex.string();
return os;
}
}这应该允许boost.test显示异常的内容。
我发现这是必要的,这样就可以用BOOST_CHECK_EQUAL()等方法测试对象。
发布于 2010-07-16 00:38:53
除了使用BOOST_CHECK_THROW或类似方法外,您可以测试函数是否抛出指定的
请参阅Boost.Test Docs
class my_exception{};
BOOST_AUTO_TEST_CASE( test )
{
int i = 0;
BOOST_CHECK_THROW( i++, my_exception );
}https://stackoverflow.com/questions/3257610
复制相似问题