Как заменить устаревший getRegistryList () из CppUnit 1.9 при обновлении до CppUnit 1.12? - PullRequest
1 голос
/ 13 марта 2012

Я портирую код с множеством тестовых наборов на основе 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;
}

Очевидно, что getRegistryList () не существует в CppUnit 1.12.Есть ли эквивалентная идиома для получения всех зарегистрированных именованных наборов тестов?

1 Ответ

2 голосов
/ 16 марта 2012

Отвечая на мой вопрос:

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;
        }
}
...