如何使用参数化测试用例?
How to use parameterized test cases?
我正在尝试将参数化测试与以 POD 作为参数的 class 结合使用。我已经到了这个阶段:
struct TestParameters : public ::testing::TestWithParam<parameters> {
parameters params;
virtual void SetUp() {
params.username = "username";
params.host = "192.168.0.254";
}
};
TEST_P(TestParameters, connect) {
std::error_code ec;
std::unique_ptr<connection> connection = make_connection(GetParam(), ec);
ASSERT_FALSE(ec);
ec = connection->connect();
ASSERT_FALSE(ec);
}
INSTANTIATE_TEST_CASE_P(postgresql_tcp, connection, ::testing::Values());
我的问题是,如何通过 INSTANTIATE_TEST_CASE_P
在 parameters
中传递我需要的值,以及如何将 parameters
的有效实例传递给 make_connection()
?
看起来你应该按照
的方式做一些事情
INSTANTIATE_TEST_CASE_P(postgresql_tcp, connect,
::testing::Values(parameters{"username", "192.168.0.254"}
//, parameters{ other params here }
));
或者您可以将 std::vector<parameters>
声明为您可以动态计算的全局变量,然后将该向量的迭代器传递给 ::testing::Values()
此外,请注意,您不需要 class 中的成员 params
,因为该参数将由 Google 测试通过 [=14= 自动提供]
我正在尝试将参数化测试与以 POD 作为参数的 class 结合使用。我已经到了这个阶段:
struct TestParameters : public ::testing::TestWithParam<parameters> {
parameters params;
virtual void SetUp() {
params.username = "username";
params.host = "192.168.0.254";
}
};
TEST_P(TestParameters, connect) {
std::error_code ec;
std::unique_ptr<connection> connection = make_connection(GetParam(), ec);
ASSERT_FALSE(ec);
ec = connection->connect();
ASSERT_FALSE(ec);
}
INSTANTIATE_TEST_CASE_P(postgresql_tcp, connection, ::testing::Values());
我的问题是,如何通过 INSTANTIATE_TEST_CASE_P
在 parameters
中传递我需要的值,以及如何将 parameters
的有效实例传递给 make_connection()
?
看起来你应该按照
的方式做一些事情INSTANTIATE_TEST_CASE_P(postgresql_tcp, connect,
::testing::Values(parameters{"username", "192.168.0.254"}
//, parameters{ other params here }
));
或者您可以将 std::vector<parameters>
声明为您可以动态计算的全局变量,然后将该向量的迭代器传递给 ::testing::Values()
此外,请注意,您不需要 class 中的成员 params
,因为该参数将由 Google 测试通过 [=14= 自动提供]