当使用Google Test将值传递到参数化测试中时。
INSTANTIATE_TEST_SUITE_P(InstantiationName,
FooTest,
testing::Values("meeny", "miny", "moe"));
有没有办法在将它们传入之前,先构造更多的c,比如一个向量 testing::Values
?
你可以向参数化类型传递许多不同的类型,例如矢量。
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)。