真的有没有什么直接的方式来做到这一点。在运行cxxtestgen
时,测试的次数是在编译时间之前确定的。它解析您的文件并找到以test
开头的方法名称。它还会找到TestSuite
后代并生成代码来实例化每个代码一次。您可以在每个测试套件上将write a createSuite
function传递给套件的构造函数,但您仍然只能返回一个对象。
您可以修改您的构建设置以在不同时间调用测试程序,每次在命令行上传递不同的参数。该计划中的折痕是由CxxTest生成的默认main
不接受命令行参数。您需要提供您自己的实现来检查参数,然后调用普通的测试运行器。事情是这样的:
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>
,并使用the --template
option to generate your test program。
但是,只要你正在编写自己的main
,你也可以尝试在那里解析你的数据集文件,然后多次调用测试运行器。类似这样的:
int main() {
std::fstream dataset("datasetlist.txt");
int result = 0;
while (std::getline(dataset, global_var))
result += CxxTest::ErrorPrinter().run();
return result;
}