Как сделать логирование CppUnit более подробным?

Я использую CppUnit для написания модульных тестов для библиотеки C ++. По умолчанию он печатает один "." персонажа на консоль для каждого теста. Я хотел бы записывать название каждого теста в отдельной строке перед запуском теста.

Я изучил API CppUnit, но совсем не очевидно, как настроить вывод. Вместо того, чтобы предлагать варианты настройки, это скорее фреймворк, в который вы можете подключить новые обработчики. (Учебник тоже не помог.) Я, наверное, мог бы потратить день на то, чтобы выяснить, как это сделать, но я не могу позволить себе терять время. Может ли кто-нибудь предоставить быстрый фрагмент, который может настроить вывод журнала для каждого теста?


person Jens Alfke    schedule 10.08.2016    source источник
comment
Какой вид логов вам нужен? А как использовать cppunit? В зависимости от того, как вы используете cppunit, есть несколько способов.   -  person moggi    schedule 24.08.2016
comment
Как я сказал выше, я хотел бы записывать имя каждого теста в отдельной строке перед запуском теста.   -  person Jens Alfke    schedule 26.08.2016
comment
Я действительно сбросил CppUnit. Я обнаружил Catch, который в миллион раз лучше, и конвертирую в него все свои тесты. github.com/philsquared/Catch   -  person Jens Alfke    schedule 26.08.2016


Ответы (1)


Достаточно просто определить и установить настраиваемый прослушиватель хода выполнения, который будет выдавать имя каждого теста перед его выполнением. Вот один, который я написал сегодня:

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

Установите его на тестовый раннер следующим образом:

CppUnit::TextUi::TestRunner runner;
MyCustomProgressTestListener progress;
runner.eventManager().addListener(&progress);
person Steve Summit    schedule 19.03.2021