死亡使用GoogleTest测试构造函数

时间:2011-06-01 00:07:45

标签: c++ googletest

尝试ASSERT_EXIT对象创建时遇到seg错误,这会引发错误参数的自定义异常,如下所示:

ASSERT_EXIT( MyObj(1,2,3) , ::testing::ExitedWithCode(1), "");

正在创建的类是这样的:

class MyObj
{
public:
    MyObj(int a, int b, int c) { if( a < b ) throw MyException("Error"); }
}

自定义异常如下:

class MyException : public std::invalid_argument
{
public:
    MyException(std::string s) { /* do some logging */ exit(1); }
};

有解决方法还是更好的方法?

由于

1 个答案:

答案 0 :(得分:1)

如果您希望未处理的异常必须终止您的应用程序(例如从nothrow成员中抛出或明确地调用exit),请考虑ASSERT_DEATH 如果您有正常的异常,则为ASSERT_THROW