如何使用cppunit显示testmethod名称

时间:2011-12-02 23:25:36

标签: c++ 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。

但此刻我的ouptut看起来像这样:

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

2 个答案:

答案 0 :(得分: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 :(得分:0)

您需要使用CppUnit::XmlOutputter。我不确定解决这个问题的确切语法。