2012-05-13 11 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/boost-list/ZzFmu14UfeQ), пока это работает для меня –

ответ

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"); 
} 

EDIT

* The current_test_case() функция теперь документированы см the official Boost documentation ,

** BOOST_TEST_CHECKPOINT был ранее назван BOOST_CHECKPOINT. См. Boost changelog (1.35.0).

+0

Однако я не могу использовать это имя, когда я использую --run_test = <ПЕЧАТНОЕ ИМЯ>, может только запустить мой тест с помощью подстановочных знаков, я не могу получить точное имя теста, странно !! – Antonio

+1

Решенный, мне пришлось указать также набор тестов и сделать '--run_test = /<ПЕЧАТНОЕ ИМЯ>'! – Antonio

+0

Я добавил ссылку на документацию + отсутствует. – BenC