In Boost.Test, how to obtain the name of current test?

boost, boost-test

Solution

There is an undocumented* function that may be called for that purpose. The following line will flush the name of the current test to `cerr`:

#include <boost/test/framework.hpp>

...

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

Note however that using this API does not flush the parameters in case of parametrized tests.

You might also be interested in the test checkpoints** (which seems to be what you want to do.)

#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()` function is now documented, see the official Boost documentation.

** `BOOST_TEST_CHECKPOINT` was previously called `BOOST_CHECKPOINT`. See the Boost changelog (1.35.0).

Problem

In `Boost.Test`, how can I obtain the name of the current auto test case? Example: ``` #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; } ``` In the example, I want the variable `test_name` to contain "MyTest".

Original source

Related problems