在Google Test参数化测试用例中访问测试信息(`TEST_P`)

时间:2015-08-05 13:08:44

标签: c++ unit-testing googletest googlemock

当我创建常规TEST(或TEST_F)时,我可以访问存储在test_info_中的测试用例信息,例如:

TEST_F(MyTestSuite, TestCaseOne) 
{
  // ... 
  test_info_->name(); // will return "TestCaseOne"
}

当我使用参数化(TEST_P)变体时,我想访问这种信息,这允许我定义基于夹具的测试。

通过深入了解,我可以看到TEST_P与其堂兄TESTTEST_F的工作方式完全不同,因为它注册新的测试用例调用::testing::UnitTest::GetInstance()->parameterized_test_registry().GetTestCasePatternHolder<test_case_name>(#test_case_name, __FILE__, __LINE__)->AddTestPattern(...)方法。我知道继承自TestWithParam的类将运行所有已注册的TEST_P测试用例。

有没有办法访问(运行时或编译时)TEST_P的名称(字符串)?

1 个答案:

答案 0 :(得分:6)

实际上是TestInfo实例的getter。来自the documentation

  

要获取当前正在运行的测试的TestInfo对象,请致电    current_test_info()单例对象上的UnitTest

// Gets information about the currently running test.
// Do NOT delete the returned object - it's managed by the UnitTest class.
const ::testing::TestInfo* const test_info =
  ::testing::UnitTest::GetInstance()->current_test_info();
printf("We are in test %s of test case %s.\n",
       test_info->name(), test_info->test_case_name());