您可以将许多不同的类型传递给参数化类型,例如向量:
struct VectorTest : public testing::TestWithParam<std::vector<int>> {};
TEST_P(VectorTest, MyTestCase) {
auto expectedVector = std::vector<int>{42, 314, 271, 161};
ASSERT_EQ(expectedVector, GetParam());
}
INSTANTIATE_TEST_CASE_P(VectorInstantiationName,
VectorTest,
testing::Values(std::vector<int>{42, 314, 271, 161}));
或用户定义的类型:
struct MyParam {
int i;
std::string s;
};
struct MyTest : public testing::TestWithParam<MyParam> {};
TEST_P(MyTest, MyTestCase) {
ASSERT_EQ(42, GetParam().i);
ASSERT_EQ("foo", GetParam().s);
}
INSTANTIATE_TEST_CASE_P(InstantiationName,
MyTest,
testing::Values(MyParam{42, "foo"}));
(使用INSTANTIATE_TEST_CASE_P,因为我目前使用的是 1.8;INSTANTIATE_TEST_SUITE_P 将用于较新版本的 gtest)。