我使用gtest作为我项目的测试框架,我需要使用以下参数值作为gtest参数传递给测试用例
./gtest_bin --gtest_repeat=5
目前我正在做的是,我已经创建了一个从“EmptyTestEventListener”扩展的自定义侦听器,并在接收到以下函数的回调时将迭代值传递给全局变量,
customListener类
class customListener : public testing::EmptyTestEventListener
{
customListener(int *iteration) : m_iteration(iteration) {}
virtual void OnTestIterationStart(const testing::UnitTest& unit_test, int iteration)
{
*m_iteration = iteration;
}
}
主
int g_iteration;
int main(int argc, char **argv)
{
testing::InitGoogleTest(&argc, argv);
if(argc > 1)
g_array_length = atoi(argv[1]);
testing::TestEventListeners& listners = testing::UnitTest::GetInstance()->listeners();
listners.Append(new printers::customListener(&g_iteration));
return RUN_ALL_TESTS();
}
是否有更简单的方法来获取此gtest参数值?
如果是一般化的,有没有办法获得可以在测试用例中使用的任何gtest特定参数值?
答案 0 :(得分:1)
重要提示 请谨慎使用 - 因为这是未记录的功能和 可能会在下一个gtest / gmock中改变(即它可能会停止工作) 版本
您可以::testing::GTEST_FLAG(flag_name)
访问任何旗帜 - 在您的情况下 - ::testing::GTEST_FLAG(repeat)
。
我通过此manual间接获取此信息并检查gtest.h文件。