如何使用参数化测试用例?

时间:2018-01-14 16:46:57

标签: c++ c++11 googletest

我试图将参数化测试用于以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

1 个答案:

答案 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()自动提供