Как показать имена тестовых методов с помощью cppunit

Как изменить вывод cppunit с точек, указывающих, сколько тестов выполнено, на фактические имена тестов или, может быть, хотя бы просто строку, которая была передана вызывающему тесту, как подсчет точек и угадывание, какой тест- функция, которую он представляет, совершенно непродуктивна в случае ошибки сегментации, которая фактически убивает всю программу. Я только что нашел ссылку на изменение вывода ошибок в случае неудачного утверждения, но ничего не сказал об общем выводе.

Функция набора моего Testclass:

static CppUnit::Test *suite() {
                CppUnit::TestSuite *suiteOfTests = new CppUnit::TestSuite( "Map Parser" );
                //string to state
                suiteOfTests->addTest( new CppUnit::TestCaller<Parser_test>("string to state I",&Parser_test::test_string_to_state_I));
                ....
                return suiteOfTests;
}

Main.cpp

CppUnit::TextUi::TestRunner runner;
runner.addTest( Parser_test::suite() );
runner.run();

Я хотел бы иметь такой вывод:

string to state I : OK
string to state II : OK
...

так как тогда я могу определить, когда программа дала сбой из-за неперехватываемого исключения, такого как SegFault.

Но на данный момент мой вывод выглядит так:

...........
Segmentation fault

person Sim    schedule 02.12.2011    source источник


Ответы (2)


Вы захотите использовать CppUnit::XmlOutputter. Я не уверен в точном синтаксисе, чтобы подключить это.

person Michael Price    schedule 03.12.2011
comment
как это должно работать? Фрагмент кода, как передать этот аргумент командной строки, был бы замечательным. - person Sim; 03.12.2011
comment
Это параметр командной строки... поэтому, когда вы находитесь в своей оболочке, вы добавляете его в командную строку. ./test_binary_to_run --xml - person Michael Price; 05.12.2011
comment
ну, в моем коде нет формы передачи аргументов командной строки, поэтому этот параметр никогда не дойдет до инструмента, и домашняя страница не предоставляет помощь в этом. Не могли бы вы написать небольшой main, для визуализации. - person Sim; 06.12.2011
comment
Мои извинения... тестовые исполняемые файлы, которые мы используем в работе, обрабатывают параметр командной строки, о котором я упоминал, и вызывают соответствующий код в CppUnit. Я исправлю ответ, как только у меня будет шанс. - person Michael Price; 06.12.2011

BriefTestProgressListener выполняет эту работу:

CppUnit::TestResult controller;

CppUnit::TestResultCollector result;
controller.addListener( &result );        

CppUnit::BriefTestProgressListener progressListener;
controller.addListener( &progressListener );

CppUnit::TestRunner runner;
runner.addTest( CppUnit::TestFactoryRegistry::getRegistry().makeTest() );   

runner.run( controller );
person BrendanB    schedule 05.11.2012