使用BOOST测试异常

时间:2011-11-06 22:54:28

标签: c++ exception testing boost

我正在使用boost测试框架1.47而且我在测试异常时遇到了困难

这是我的异常类

class VideoCaptureException : public std::exception
{

    std::string m_Description;
public:
    VideoCaptureException(const char* description)
    {
        m_Description = std::string(description);
    }
    VideoCaptureException(const std::string& description)
    {
        m_Description = description;
    }
    virtual ~VideoCaptureException() throw() {}
    virtual const char* what() const throw()
    {
        return m_Description.c_str();
    }
}

我正在尝试测试只是抛出此异常的代码

BOOST_CHECK_THROW( source.StopCapture(), VideoCaptureException )

由于某种原因,它不起作用。

unknown location(0): fatal error in "testVideoCaptureSource": unknown type
testVideoCaptureSource.cpp(28): last checkpoint

我做错了什么?

1 个答案:

答案 0 :(得分:6)

在我自己遇到这个错误后,我将其追踪到一个愚蠢但容易犯错的错误:

throw new VideoCaptureException( "uh-oh" );

将失败,并显示错误消息:

throw VideoCaptureException( "uh-oh" );

会成功。

new变体导致捕获异常的指针,而不是异常本身。升级库不知道如何处理这个问题,所以它只是说"未知类型"。

如果图书馆能够正确地解释这种情况,那将会很好,但希望其他任何人都会发生致命错误:未知类型"会找到这个页面,看看如何解决它!