您可以使用 Google 测试将复杂类型传递到参数化测试中吗?
Can you pass in complex types into Parameterised Tests with Google Test?
使用 Google 测试将值传递到参数化测试时:
INSTANTIATE_TEST_SUITE_P(InstantiationName,
FooTest,
testing::Values("meeny", "miny", "moe"));
在将它们传递给 testing::Values
之前,是否有构造更多的 c(例如向量)?
您可以将许多不同的类型传递给参数化类型,例如矢量:
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)。
使用 Google 测试将值传递到参数化测试时:
INSTANTIATE_TEST_SUITE_P(InstantiationName,
FooTest,
testing::Values("meeny", "miny", "moe"));
在将它们传递给 testing::Values
之前,是否有构造更多的 c(例如向量)?
您可以将许多不同的类型传递给参数化类型,例如矢量:
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)。