真的有沒有什麼直接的方式來做到這一點。在運行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;
}