使用 Google 测试,我想指定一个测试夹具以用于不同的测试用例。夹具应分配和取消分配类 TheClass
及其数据管理类 TheClassData
的对象,其中数据管理类需要数据文件的名称。
对于不同的测试,文件名应该不同。
我定义了以下夹具:
class TheClassTest : public ::testing::Test {
protected:
TheClassTest(std::string filename) : datafile(filename) {}
virtual ~TheClassTest() {}
virtual void SetUp() {
data = new TheClassData(datafile);
tc = new TheClass(data);
}
virtual void TearDown() {
delete tc;
delete data;
}
std::string datafile;
TheClassData* data;
TheClass* tc;
};
现在,不同的测试应该使用具有不同文件名的夹具。将其想象为设置测试环境。
问题: 如何从测试中指定文件名,即如何调用夹具的非默认构造函数?
我发现了 ::testing::TestWithParam<T>
和 TEST_P
之类的东西,这无济于事,因为我不想使用不同的值运行一项测试,而是使用一个夹具进行不同的测试。
原文由 Gregor 发布,翻译遵循 CC BY-SA 4.0 许可协议
正如另一位用户所建议的那样,您无法通过使用非默认构造函数实例化夹具来实现您想要的。但是,还有其他方法。只需重载
SetUp
函数并在测试中显式调用该版本:现在在测试中只需使用这个重载来设置文件名:
无参数的
TearDown
会在测试完成后自动清理。