2017-01-12 5 views
0

캐치를 사용하여 단위 테스트를 작성하고 REQUIRE_THROWS_AS을 사용하더라도 예외가 발생하기 때문에 테스트가 실패한 문제가 발생했습니다. 이것은 내 테스트입니다 :캐치 예외가 발생하지 않음

SECTION("Get column index for inexistent name") { 
    REQUIRE_THROWS_AS(result->column_index("inexistent"), std::out_of_range); 
} 

그리고 이것은 내가 내 콘솔에서 얻을 예외 :

$ tests/unit_tests "Test Result" 
libc++abi.dylib: terminating with uncaught exception of type std::out_of_range: Name not found. 

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 
unit_tests is a Catch v1.5.8 host application. 
Run with -? for options 

------------------------------------------------------------------------------- 
Test Result 
    Query empty table 
    Get column index for inexistent name 
------------------------------------------------------------------------------- 
<path to file>:22 
............................................................................... 

<path to file>:46: FAILED: 
due to a fatal error condition: 
    SIGABRT - Abort (abnormal termination) signal 

=============================================================================== 
test cases: 1 | 1 failed 
assertions: 8 | 7 passed | 1 failed 

나는이 예외가 정확히 캐치 이해한다면 제가 바로 잡을려고?

+0

나는 catch를 모른다. 예외가 'REQUIRE_THROWS_AS'가 어떤 일을 할 수있는 기회를 잡기 전에 throw되는 것처럼 보인다. 'REQUIRE_THROWS_AS (result-> column_index, "inexistent", std :: out_of_range)와 같은 것이 필요할 것입니다. 그래서'REQUIRE_THROWS_AS'는 try-catch 블록을 만들 기회를가집니다. – nwp

+0

시험을 밟아 보셨습니까? nwp가 말했듯이 예외가 Throw 된 것으로 생각되면 예외가 던져 질 것입니다. – UKMonkey

+1

뾰족한 곳이 아닌 예외를 잡은 것 같습니다. try {} catch() {} catch (...) {} 그것을 디버그하십시오. –

답변

0

make clean이 문제를 해결했습니다.