使用Google测试,我想指定一个Test fixture以用于不同的测试用例。 夹具应分配和取消分配类TheClass
及其数据管理类TheClassData
的对象,其中数据管理类需要数据文件的名称。
对于不同的测试,文件名应该有所不同。指定Google测试的构造函数参数Fixture
我定义了如下夹具:
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
这样的东西,这没有帮助,因为我不想运行一个测试不同的值,但使用一个灯具进行不同的测试。
所以你想自己运行该夹具?谷歌测试默认测试运行器不能实例化具有参数的灯具。 –
我想使用灯具运行测试(可能是'TEST_F')。所以答案是,这是不可能的?谢谢。 – Gregor
我认为'TestWithParam'和'TEST_P'正是你所需要的。查找[高级文档](https://github.com/google/googletest/blob/master/googletest/docs/AdvancedGuide.md)如何在实践中使用它们。您可以随时在测试用例中实例化待测试的实例(我假设它是TheClass)。 –