2012-05-13 3 views
8

Boost.Test에서 현재 자동 테스트 사례의 이름을 어떻게 얻을 수 있습니까?Boost.Test에서 현재 테스트의 이름을 얻는 방법은 무엇입니까?

예 : 예에서

#include <boost/test/unit_test.hpp> 
BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    std::cerr << "Starting " << test_name << std::endl; 
    // lots of code here 
    std::cerr << "Ending " << test_name << std::endl; 
} 

, 나는 변수 test_name는 "MYTEST"를 포함합니다.

+1

은 [이]를 살펴 보자 (https://groups.google.com/forum/?fromgroups=#!topic : –

답변

17

그 목적으로 불려질 ​​수있는 문서화되지 않은 * 기능이 있습니다. 다음 줄은 cerr에 현재 테스트의 이름을 플래시합니다 :

#include <boost/test/framework.hpp> 

... 

std::cerr << boost::unit_test::framework::current_test_case().p_name 
      << std::endl; 

참고 그러나이 API를 사용하여 매개 변수화 시험의 경우 매개 변수를 플러시하지 않습니다.

당신은 또한 test checkpoints **에 관심이있을 수있다 (당신이 무엇을 원하는 것 같다.)

#include <boost/test/included/unit_test.hpp> 

... 

BOOST_AUTO_TEST_CASE(MyTest) 
{ 
    BOOST_TEST_CHECKPOINT("Starting"); 
    // lots of code here 
    BOOST_TEST_CHECKPOINT("Ending"); 
} 

편집

* current_test_case() 기능은 지금 문서화되어, the official Boost documentation 참조 .

** BOOST_TEST_CHECKPOINT은 이전에 BOOST_CHECKPOINT이라고 불렀다. Boost changelog (1.35.0)을 참조하십시오.

auto test_name = std::string(boost::unit_test::framework::current_test_case().p_name) 
+0

그러나 --run_test = 을 사용하면 와일드 카드를 사용하여 테스트를 실행할 수 있지만 그 이름을 사용하지 않아도됩니다. 정확한 시험 이름, 이상한 것을 얻으십시오 !! – Antonio

+1

해결되었으므로 테스트 스위트도 지정해야하고'--run_test = /<해당 이름> '! – Antonio

+0

문서에 누락 된 포함 링크가 추가되었습니다. – BenC