你可能在main()中调用的TestRunner :: run()方法实际上有可选参数:run(std :: string testName ="",bool doWait = false,bool doPrintResult = true,bool doPrintProgress = true).testName必须是测试的特定名称.如果需要,您可以按名称请求特定测试.您还可以在特定测试或runTestByName(testName)上调用runTest(Test*).
但听起来你想要变得更加复杂.假设您使用CPPUNIT_TEST_SUITE_REGISTRATION()宏注册了所有测试,静态TestFactoryRegistry :: makeTest()方法将返回所有已注册测试的TestSuite.
TestSuite对象通过getTests()方法生成一个向量.您可以遍历这些,将它们的名称与regexp(或索引号或您想要的)匹配,而不是像大多数人那样在整个套件上调用TestRunner :: addTest(registry.makeTest()),您只需添加您要求的具体测试.
你必须写一些东西来迭代测试并进行匹配,但除此之外它应该是简单的.可能有十几行代码,还有解析命令行参数.使用正则表达式让自己更简单.