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

5

我该如何将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
2个回答

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

1
你需要利用 CppUnit::XmlOutputter。我不确定如何精确地将其连接起来的语法。

这应该怎么运作?有一段代码教如何传递命令行参数会很棒。 - Sim
这是一个命令行参数... 因此当您在 shell 中时,将其添加到命令行中。 ./test_binary_to_run --xml - Michael Price
好的,我的代码中没有传递命令行参数的形式,因此这个参数永远不会到达工具,而且主页也没有提供帮助。你能否写一个小的main函数来进行可视化呢? - Sim
抱歉...我们在工作中使用的测试可执行文件会处理我提到的命令行参数,并调用CppUnit中适当的代码。我一有机会就会修改答案。 - Michael Price

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接