2013-11-04 13 views
2

나는 googletest을 사용하고 있으며 많은 테스트에서 ASSERT_THROW 명령을 사용합니다. 문제는 예를 들어 기대했던 것과 다른 예외가 발생하는 경우 얻을 수있는 모든 것입니다.ASSERT_THROW에서 예외 메시지 받기

실제 : 다른 유형을 throw합니다.

what() 등의 반환 값을 토하는 방법이 있습니까?

+0

예외가'std :: exception'에서 파생 되었습니까? 나는 Google Test 코드를보고 있는데, 한 지점에서'std :: exception'에서 파생 된 예외를 포착하고'e.what()'를 출력 할 것이다. 그러나 나는 그것이 여전히'EXPECT_THROW' 사례의 일부인지 아닌지 파악하려고하고 있습니다. – NicholasM

+0

의견을 보내 주셔서 감사합니다. 예, 그렇습니다. 나는 어떤 다른 출력을 내뱉지만 성공하지 못하게하려면 무엇을 무시하려고 시도했다. 어쩌면 나는 그것을 올바르게 무시하지 않았을까요? – Bevan

답변

2
당신은 아마 포인터 던져

throw new MyDerivedException(); 

을 (new 키워드를 사용) 및 예외의 비 포인터 타입을받을 것으로 예상 : 당신은 에 의해 던져해야

EXPECT_THROW(blah, MyDerivedException); 

.

throw MyDerivedException(); // notice lack of 'new' 
+1

왜 대답을 수락 했습니까? Google 테스트의 ASSERT_THROW 또는 EXPECT_THROW에서 실제 예외 유형이나 메시지를 인쇄하는 방법을 설명하지 않습니다. 이러한 유형의 테스트 실패를 조사하는 동안 우리는 여전히 try/catch를 입력해야합니다. – 4LegsDrivenCat

-3

throw new MyDerivedException() ... EXPECT_THROW (blah, MyDerivedException *);

+0

진짜 대답인가요? 위의 것과 어떻게 다른가요? – Pupsik