2014-02-14 3 views
-3

클라이언트 서버 N/W에서 부스트 유닛 테스트를 수행하려고합니다.부스트 유닛 테스트 예외

예를 들어 예외가 발생했는지 어떻게 테스트 할 수 있습니까? 서버가 온라인 상태가 아니면 boost::asio::error::Connection_refused?

설명서를 검토 한 결과 여전히 혼란 스럽습니다 (boost, C++ newbie).

참고 저는 IP 주소와 포트 번호를 설정하고 서버에 연결하는 생성자가 포함 된 BOOST_AUTO_TEST_CASE을 실행했습니다. BOOST_AUTO_TEST을 실행할 때 서버가 오프라인 상태이고 아무런 오류도 감지되지 않을 경우 예상되는 예외가 발생하지만 질문이없는 것 같습니다. BOOST_CHECK_THROW 또는 BOOST_WARN_THROW은 내가없는 상태에서 테스트를 수행 할 수 있다면 어떻게해야합니까?

BOOST_AUTO_TEST_CASE(testMissingServer) { 
    MyClient client; 
    BOOST_CHECK_THROW(
    client.connect(someNonexistentServerIP, somePort), 
    boost::asio::error::Connection_refused 
); 
} 

이 수동으로 다음과 같이 보일 것입니다 수행 :

+1

달성하고자하는 것은 완전히 * 분명하지 않습니다. 당신의 질문을 이해하는 한, 당신은 이미 오프라인 서버에 연결하려고 할 때 예상되는 예외를 성공적으로 얻는 테스트 케이스를 작성했습니다. 그래서 당신의 문제는 무엇입니까? –

+0

응답 Arne에 감사드립니다. 나는 BOOST_CHECK_THROW 나 BOOST_WARN_THROW 같은 것을 사용하지 않고 테스트를 실행했다. 그런 것들이 필요한지 궁금해했다. 테스트를 실행할 수 있다면 BOOST_CHECK_Throw, e.t.c를 사용하지 않고 어떤 예외도없이 예외를 얻습니다. – user2911641

+0

아, 이제 코드가 어떻게 생겼는지 추측 할 수 있습니다 (올바른 예외를 잡았을 때 "수동으로 잡으려고 시도하고 성공"하겠습니까?). 그러나 친절하게 제공한다면 우리는 말할 수 있습니다. builtin boost 매크로의 이점은 무엇입니까? 나는 당신이 자신의 질문을 편집하기에 충분한 담당자가 없다고 가정하기 때문에 [SSCCE] (http://sscce.org)에 붙여 넣기 링크를 주시면 우리가 편집 해 드리겠습니다. –

답변

0

난 단지 당신의 현재 코드의 모습을 추측 할 수 있기 때문에, 나는 당신의 테스트 케이스가 BOOST_CHECK_THROW와 같이 수있는 방법의 exaple을 제공합니다

당신이 잘못 exceptinos 모든 별도의 예외없이 확인해야하기 때문에
BOOST_AUTO_TEST_CASE(testMissingServer) { 
    MyClient client; 
    try { 
    client.connect(someNonexistentServerIP, somePort); 
    BOOST_ERROR("client.connect(someNonexistentServerIP, somePort) did not throw anything. Expected a boost::asio::error::Connection_refused"); 
    } catch(boost::asio::error::Connection_refused const&) { 
    //ok, this is the expected case 
    } catch(...) { 
    BOOST_ERROR("client.connect(someNonexistentServerIP, somePort) did throw an unkown exception, but expected a boost::asio::error::Connection_refused"); 
    } 

}

당신이 볼 훨씬 더 지루한입니다. BOOST_CHECK_THROW은 더 간결하고 읽기 쉬운 테스트 케이스를 제공 할뿐만 아니라 예상되는 예외가 발생하지 않으면 의미있는 실패 메시지를 생성합니다.

+0

설명해 주신 Arne에게 감사드립니다. – user2911641

관련 문제