我今天遇到了一个类似的问题,我有一个结构体,我想用测试数据填充,这些数据将作为参数传递给我正在测试的函数。我想有这些结构的一个向量,并正在寻找一个单行方法来初始化每个结构。
我最终在struct中使用了一个构造函数,我相信在对您的问题的一些回答中也建议了这一点。
让构造函数的实参与公共成员变量具有相同的名称可能是不好的做法,这需要使用this指针。如果有更好的方法,有人可以建议编辑。
typedef struct testdatum_s {
public:
std::string argument1;
std::string argument2;
std::string argument3;
std::string argument4;
int count;
testdatum_s (
std::string argument1,
std::string argument2,
std::string argument3,
std::string argument4,
int count)
{
this->rotation = argument1;
this->tstamp = argument2;
this->auth = argument3;
this->answer = argument4;
this->count = count;
}
} testdatum;
我在我的测试函数中使用它来调用被测试的函数,使用各种参数,像这样:
std::vector<testdatum> testdata;
testdata.push_back(testdatum("val11", "val12", "val13", "val14", 5));
testdata.push_back(testdatum("val21", "val22", "val23", "val24", 1));
testdata.push_back(testdatum("val31", "val32", "val33", "val34", 7));
for (std::vector<testdatum>::iterator i = testdata.begin(); i != testdata.end(); ++i) {
function_in_test(i->argument1, i->argument2, i->argument3, i->argument4m i->count);
}