使用GoogleTest对构造函数进行死亡测试

问题描述

| 尝试创建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); }
};
解决方法还是更好的方法? 谢谢     

解决方法

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