在测试用例中使用 gtest 特定参数

Using gtest specific parameters inside the testcase

我使用 gtest 作为我的项目的测试框架,我需要在测试用例中使用以下作为 gtest 参数传递的参数值

./gtest_bin --gtest_repeat=5

目前我正在做的是,我创建了一个从 "EmptyTestEventListener" 扩展的自定义侦听器,并在收到以下函数的回调时将迭代值传递给全局变量,如下所示,

自定义监听器class

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 特定参数值?

IMPORTANT NOTE Please use with great care - as this is not documented feature and might be changed (i.e. it might stop working) in next gtest/gmock versions.

您可以通过 ::testing::GTEST_FLAG(flag_name) 访问任何标志 - 在您的情况下 - ::testing::GTEST_FLAG(repeat).

我从这个 manual 并通过检查 gtest.h 文件间接获得了这些信息。