1

尝试创建 ASSERT_EXIT 对象时出现段错误,该对象会在错误参数上引发自定义异常,如下所示:

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); }
};

是否有解决方法或更好的方法?

谢谢

4

1 回答 1

1

如果您期望未处理的异常必须终止您的应用程序(例如从 nothrow 成员抛出或显式调用退出),请考虑 ASSERT_DEATH 或如果您有正常异常,请考虑 ASSERT_THROW

于 2013-12-24T09:56:22.933 回答