如何使用Boost.Test捕获我的自定义异常?

时间:2010-07-15 16:18:22

标签: c++ boost

当我使用Boost.Test测试我的C ++类时,我的自定义异常被抛出(它们是我的类的实例),这是我在日志中看到的消息:

unknown location:0: fatal error in "testMethod": unknown type

这是非常没有信息的,我不知道如何教Boost.Test将我的异常转换为字符串并正确显示它。我的Exception课程有operator string(),但没有帮助。有任何想法吗?谢谢!

4 个答案:

答案 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继承了它,一切正常。