По мотивам CppUnit::TextTestProgressListener написал я вот такой класс:
class CPPUNIT_API TextTestProgressListenerEx : public CppUnit::TextTestProgressListener
{
public:
TextTestProgressListenerEx() {}
virtual ~TextTestProgressListenerEx() {}
void startTest( CppUnit::Test *test );
void addFailure ( const CppUnit::TestFailure & failure );
void endTest( CppUnit::Test *test );
private:
TextTestProgressListenerEx( const TextTestProgressListenerEx © );
void operator =( const TextTestProgressListenerEx © );
private:
bool hadError;
};
void
TextTestProgressListenerEx::startTest( CppUnit::Test *test )
{
hadError = false;
std::cerr << test->getName();
std::cerr.flush();
}
void
TextTestProgressListenerEx::addFailure( const CppUnit::TestFailure &failure )
{
hadError = true;
std::cerr << ( failure.isError() ? "\tError!" : "\tFailure!" );
std::cerr.flush();
}
void
TextTestProgressListenerEx::endTest( CppUnit::Test *test )
{
if (!hadError)
std::cerr << "\tOK";
std::cerr << std::endl;
std::cerr.flush();
}
Он выводит результаты по каждому тест-кейсу. Если хочется, например, их группировать по сюитам, надо анализировать имя приходящего теста. Дело в том, что для сюит слушатели прогресса не вызываются

Но имена тестов в CppUnit писаны в совершенно стандартном формате, поэтому можно, ориентируясь по точкам, выводить все это более красиво. Например, не писать имя каждого тест-кейса, а только для сюит. Для тест-кейсов же выводить, скажем, точку...
... << RSDN@Home 1.1 beta 2 >>