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

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_Pparameters 中传递我需要的值,以及如何将 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= 自动提供]