实际上没有任何直接的方法可以做到这一点。测试的数量是在编译时间之前确定的,当你运行cxxtestgen
. 它解析您的文件并查找以 . 开头的方法名称test
。它还找到TestSuite
后代并生成代码以实例化每个后代。您可以在每个测试套件上编写一个createSuite
函数来将参数传递给套件的构造函数,但您仍然仅限于返回一个对象。
您可以修改构建设置以调用测试程序 40 次不同的时间,每次在命令行上传递不同的参数。该计划的问题是main
CxxTest 生成的默认值不接受命令行参数。您需要提供自己的实现来检查参数,然后调用正常的测试运行器。像这样的东西:
std::string global_var; // check this in your test cases
int main(int argc, char* argv[]) { // add parameter list
global_var = argv[1]; // read parameter list
return CxxTest::ErrorPrinter().run(); // standard CxxTest
}
要使用该功能,请在运行时省略该--error-printer
选项,在文件末尾cxxtestgen
添加,然后使用该选项生成您的测试程序。<CxxTest world>
--template
但只要您编写自己的main
,您也可以尝试在那里解析您的数据集文件,然后多次调用测试运行程序。像这样的东西:
int main() {
std::fstream dataset("datasetlist.txt");
int result = 0;
while (std::getline(dataset, global_var))
result += CxxTest::ErrorPrinter().run();
return result;
}