如何在运行时选择CPPUnit中的单元测试子集?

rat*_*kok 6 cppunit

我使用CppUnit作为单元测试框架.是否可以选择要在运行时执行的测试用例子集?

CppUnit中是否提供了过滤选项以适应这种情况?

Joh*_*ers 5

你可能在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()),您只需添加您要求的具体测试.

你必须写一些东西来迭代测试并进行匹配,但除此之外它应该是简单的.可能有十几行代码,还有解析命令行参数.使用正则表达式让自己更简单.