2011-06-01 69 views
0

获得一个赛格故障而试图ASSERT_EXIT对象创建抛出一个自定义异常的不正确参数,像这样:死亡测试构造与GoogleTest

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

有一种解决方法或贝特r方法?

感谢

+0

哪里SIGSEGV来自哪里?在您的代码中的某处,或从谷歌测试的大肠? (如果它来自Google测试,这是Google测试中的一个错误,您应该通知他们) – 2011-06-01 00:39:43

+1

您在抛出异常时调用'exit(1)'?为什么?! – 2011-06-01 12:59:32

回答

1

请考虑ASSERT_DEATH如果您希望未处理的异常必须终止应用程序(比如从抛出异常成员投掷或调用exit明确地) 或ASSERT_THROW如果你有正常的异常