提问者:小点点

在gtest中将数组传递给参数化测试


gtest中的参数化测试允许您使用不同的参数测试代码,而无需编写相同测试的多个副本

我见过传递值,std::pair,std::tuple等的例子。

但是我不确定如何将array/initializer_list传递到测试中。

预期如下:

INSTANTIATE_TEST_SUITE_P(Sample, FooTest,
                         testing::Values({1,23,53},{534,34,456));

有可能吗? 如果是,如何?


共1个答案

匿名用户

您可以传递任何类型作为参数。 当您从类模板WithParamInterface(或TestWithParam)继承测试夹具a时,您将提供参数类型:

class FooTest: TestWithParam<std::array<int, 3>>
//class FooTest: TestWithParam<std::vector<int>>
//class FooTest: TestWithParam<std::initializer_list<int>> //I'm not sure if this is a good idea, initializer_list has weird lifetime management
{};

INSTANTIATE_TEST_SUITE_P(Sample, FooTest,
                         testing::Values({1,23,53},{534,34,456});