如何使用cppunit显示测试方法名称

How to show testmethod names using cppunit

本文关键字:测试方法 显示 何使用 cppunit      更新时间:2023-10-16

我如何将cppunit的输出从点(表示完成了多少个测试)更改为测试的实际名称,或者可能只是至少给出给测试调用者的字符串,因为计数点并猜测它代表哪个测试函数是非常无效的,如果出现分段错误,实际上会杀死整个程序。我只是找到了在断言失败的情况下更改错误输出的参考,但没有关于一般输出的参考。

Testclass的suite函数:

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

由一个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 );

您将需要使用CppUnit::XmlOutputter。我不确定连接这个的确切语法。