2011-06-01 70 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如果你有正常的異常