2012-03-12 47 views
1

我正在移植基於CppUnit 1.9.11左右的很多測試套件的代碼。我的測試運行器可以打印所有使用這個(不建議使用?)成語命名的測試套件:如何從CppUnit 1.9更新到CppUnit 1.12時替換廢棄的getRegistryList()?

cout << "\n Usage: UnitTest testSuiteName ...\n\n"; 
cout << " Tests available: \n"; 
CppUnit::TestFactoryRegistry registry("All Tests"); 
CppUnit::Test* test = registry.getRegistry().makeTest(); 
CppUnit::Registries registryList = registry.getRegistryList(); 
CppUnit::Registries::iterator it; 
for (it = registryList.begin(); it != registryList.end(); ++it) 
{ 
     cout << " - " << it->first << endl; 
} 

顯然getRegistryList()不CppUnit的1.12存在。是否有相當的習慣用法來獲得所有已註冊的命名測試套件?

回答

2

回答我的問題:

cout << "\n Usage: UnitTest TestNames\n\n"; 
cout << " Tests available: \n"; 

CppUnit::TestFactoryRegistry &registry = 
     CppUnit::TestFactoryRegistry::getRegistry(); // "All Tests" 
CppUnit::Test *test = registry.makeTest(); 
CppUnit::TestSuite *s = dynamic_cast<CppUnit::TestSuite*>(test); 
if (!s) { 
     cerr << "can't get TestSuite" << endl; 
} else { 
     typedef CppUnitVector<CppUnit::Test *> container_type; 
     const container_type &tests(s->getTests()); 
     container_type::const_iterator ii; 
     for (ii=tests.begin(); ii != tests.end(); ++ii) { 
       const CppUnit::Test *t = (*ii); 
       cout << " - " << t->getName() << endl; 
     } 
}