2012-05-13 21 views
8

In Boost.Test, come posso ottenere il nome del caso di test automatico corrente?In Boost.Test, come ottenere il nome del test corrente?

Esempio:

#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; 
} 

Nell'esempio, voglio la variabile test_name per contenere "MyTest".

+1

Date un'occhiata a [questo] (https://groups.google.com/forum/?fromgroups=#!topic/boost-list/ZzFmu14UfeQ), per ora funziona per me –

risposta

17

Esiste una funzione non documentata * che può essere chiamata a tale scopo. La seguente riga scaricherà il nome del test corrente cerr:

#include <boost/test/framework.hpp> 

... 

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

nota tuttavia che utilizza questa API non scarica i parametri in caso di test parametrizzati.

Potreste anche essere interessato al test checkpoints ** (che sembra essere ciò che si vuole fare.)

#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

* La funzione current_test_case() è ora documentato, vedi the official Boost documentation .

** BOOST_TEST_CHECKPOINT era stato precedentemente chiamato BOOST_CHECKPOINT. Vedi lo Boost changelog (1.35.0).

+0

Tuttavia, non mi viene in mente di usare quel nome quando uso --run_test = , posso solo eseguire il mio test usando i caratteri jolly, non posso prendi il nome esatto del test, strano !! – Antonio

+1

Risolto, ho dovuto specificare anche la suite di test e fare '--run_test = /'! – Antonio

+0

Ho aggiunto un collegamento alla documentazione + l'inclusione mancante. – BenC

Problemi correlati