我正在移植基于CppUnit 1.9.11左右的许多测试套件的代码。我的测试运行器可以使用这个(不推荐的?)成语打印所有命名的测试套件:
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;
}
显然,CppUnit 1.12中不存在getRegistryList()。获得所有注册的,命名的测试套件是否有相同的习惯用语?
答案 0 :(得分:2)
回答我自己的问题:
cout << "\n Usage: UnitTest TestNames\n\n";
cout << " Tests available: \n";
CppUnit::TestFactoryRegistry ®istry =
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;
}
}