Jens Alfke
Jens Alfke

Reputation: 1981

How to make CppUnit logging more verbose?

I'm using CppUnit to write unit tests for a C++ library. By default it prints a single "." character to the console for each test. I'd like to log the name of each test on a separate line, before the test runs.

I've looked into the CppUnit API, but it's not at all obvious how to customize the output. Instead of offering customization options, it's more of a framework that you can plug new handlers into. (The tutorial hasn't helped, either.) I could probably spend a day figuring out how to do this, but I can't afford to lose the time. Could someone provide a quick snippet that can customize the per-test log output?

Upvotes: 5

Views: 1632

Answers (1)

Steve Summit
Steve Summit

Reputation: 48023

It is simple enough to define and install a custom progress listener to emit the name of each test before it's performed. Here's one I wrote today:

class MyCustomProgressTestListener : public CppUnit::TextTestProgressListener {
 public:
     virtual void startTest(CppUnit::Test *test) {
         fprintf(stderr, "starting test %s\n", test->getName().c_str());
     }
};

Install it on a test runner like this:

CppUnit::TextUi::TestRunner runner;
MyCustomProgressTestListener progress;
runner.eventManager().addListener(&progress);

Upvotes: 0

Related Questions