Я использую CppUnit в качестве платформы модульного теста. Действительно ли возможно выбрать подмножество тестовых сценариев для выполнения во времени выполнения?
Существует ли возможность фильтрации, предоставленная в CppUnit для размещения этого?
Метод TestRunner :: run (), который вы, вероятно, вызываете в main (), на самом деле имеет необязательные параметры: run (std :: string testName = "", bool doWait = false, bool doPrintResult = true, bool doPrintProgress = true ). testName должно быть конкретным названием теста. Вы можете запросить конкретный тест по имени, если хотите. Вы также можете вызвать runTest (Test *) для определенного теста или runTestByName (testName).
Но похоже, что вы хотите стать более изощренным. Предполагая, что вы зарегистрировали все свои тесты с помощью макросов CPPUNIT_TEST_SUITE_REGISTRATION (), статический метод TestFactoryRegistry :: makeTest () вернет TestSuite всех зарегистрированных тестов.
Объект TestSuite выдает вектор с помощью метода getTests (). Вы можете перебирать их, сопоставляя их имена с регулярным выражением (или по номеру индекса, или как хотите) и вместо вызова TestRunner :: addTest (registry.makeTest ()) для всего набора, как это делает большинство людей, вы просто добавляете конкретные тесты, которые вы запрашиваете.
Вам нужно будет написать что-нибудь, чтобы перебирать тесты и выполнять сопоставление, но в остальном это должно быть очень просто. Вероятно, дюжина строк кода плюс анализ аргументов командной строки. Используйте регулярное выражение, чтобы упростить себе задачу.
Если вы используете GUI test runner для cppunit, вы можете просто отметить тесты, которые хотите запустить.
Если вы не можете использовать GUI test runner, посмотрите этот пост - он описывает "конфигурируемый" способ определения того, какие тесты запускать на основе xml документа (последнее сообщение описывает более или менее то решение, которое у меня получилось в итоге).