2014-10-11 2 views
0

나는 특정 위치에 문자를 반환하는 vector<string> 및 메서드 (클래스 내)가 있습니다. 이것은 try catch 블록에서 모두 발생합니다. 내가 의도적으로 EXPECT_THROW(method, std::out_of_range)으로 std::out_of_range 예외를 호출, 시험이 방법을 구글하려고 노력하지만, 대신에 전달 된 테스트를 얻는 내가 .what() 몇 가지 오류 메시지 vector::_M_range_check 및 테스트 실패를 얻을 때googletesting out of range

문제가 나타납니다.

한 방법

난 그냥 vec.at(y).at(x) = c;를 호출하고 어디도 나는 그래서 std::out_of_range

를 잡아하고 싶은 특정 위치에 다른 문자를 설정하는 유사한 void 방법도 있습니다

char ClassA::getC(int x, int y){ 
    try{ 
     return vec.at(y).at(x); 

    catch(const out_of_range& e){ 
     cout << '\n' << e.what() << '\n'; 
     return 0; 
    } 
} 

내가 잘못 했니?

답변

1

EXPECT_THROW(method, std::out_of_range)

은 당신이 여기서 말하고있는 것은이 방법이 예외를 던질 것으로 예상한다는 것입니다. 그것이 잘못된 것입니다.

해당 예외가 메소드에서 처리되기 때문에 결코 발생하지 않습니다.

오류 메시지는 cout << ...에서 온 것입니다.

보다 기본적인 수준에서 테스트 한 기능이 잘못되었습니다. 이는 응용 프로그램에서 예외를 처리하려는 방식이 아닙니다.

+0

그래서 try catch를 삭제해야합니까? – TheGuyWithStreetCred

+0

... 아마도 앱이 앱에 의존한다면 더 많은 작업을해야 할 것입니다. –

+0

힌트 : P – TheGuyWithStreetCred