我试图将参数化测试用于以POD作为参数的类。我已达到这个阶段:
free
我的问题是,如何通过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());
在parameters
中传递我需要的值以及如何将INSTANTIATE_TEST_CASE_P
的有效实例传递给parameters
?
答案 0 :(得分:1)
看起来你应该按照
的方式做点什么INSTANTIATE_TEST_CASE_P(postgresql_tcp, connect,
::testing::Values(parameters{"username", "192.168.0.254"}
//, parameters{ other params here }
));
或者你可以将std::vector<parameters>
声明为动态可以计算的某个地方,然后将该向量的迭代器传递给::testing::Values()
另外,请注意您在灯具类中不需要成员params
,因为该参数将由Google Test通过GetParam()
自动提供