C++ 在testcase中使用特定于gtest的参数

C++ 在testcase中使用特定于gtest的参数,c++,googletest,C++,Googletest,我使用gtest作为我项目的测试框架,我需要在测试用例中使用以下作为gtest参数传递的参数值 /gtest\u bin--gtest\u repeat=5 目前我正在做的是,我已经创建了一个从“EmptyTestEventListener”扩展而来的自定义侦听器,并在收到对以下函数的回调时将迭代值传递给一个全局变量,如下所示: customListener类 主要 是否有更简单的方法获取此gtest参数值 如果是广义的,有没有一种方法可以获得任何可以在测试用例中使用的gtest特定参数值 重要

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

/gtest\u bin--gtest\u repeat=5

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

customListener类

主要

是否有更简单的方法获取此gtest参数值

如果是广义的,有没有一种方法可以获得任何可以在测试用例中使用的gtest特定参数值

重要提示 请小心使用-因为这不是记录的功能和 可能在下一次gtest/gmock中更改(即可能停止工作) 版本

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


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

g_迭代
g_数组长度
相同吗?
g_数组长度
完全是一个单独的变量,您可以忽略它以获取信息。在您提到标志之后,我检查了gtest变量。但在我目前使用的gtest版本中,将此功能作为变量-
::testing::FLAGS
,因此在本例中,
::testing::FLAGS(gtest)repeat
。因此,正如您在注释
GTEST#u FLAG
中提到的一样,宏被定义为
\define GTEST#u FLAG(name)FLAGS\u GTEST#u#name
,因此我们都是正确的-但我相信-我的版本更安全一些。。。
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();
}