当我创建常规TEST
(或TEST_F
)时,我可以访问存储在test_info_
中的测试用例信息,例如:
TEST_F(MyTestSuite, TestCaseOne)
{
// ...
test_info_->name(); // will return "TestCaseOne"
}
当我使用参数化(TEST_P
)变体时,我想访问这种信息,这允许我定义基于夹具的测试。
通过深入了解,我可以看到TEST_P
与其堂兄TEST
和TEST_F
的工作方式完全不同,因为它注册新的测试用例调用::testing::UnitTest::GetInstance()->parameterized_test_registry().GetTestCasePatternHolder<test_case_name>(#test_case_name, __FILE__, __LINE__)->AddTestPattern(...)
方法。我知道继承自TestWithParam
的类将运行所有已注册的TEST_P
测试用例。
有没有办法访问(运行时或编译时)TEST_P
的名称(字符串)?
答案 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());