Метод 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 ()) для всего набора, как это делает большинство людей, вы просто добавляете конкретные тесты, которые вы запрашиваете.
Вам придется написать что-то, чтобы пройтись по тестам и выполнить сопоставление, но в остальном все должно быть просто. Вероятно, дюжина строк кода, плюс разбор аргументов командной строки. Используйте регулярные выражения, чтобы вам было проще.