在Google Test框架中访问测试用例中的argc和argv的方法是什么?

Nil*_*ils 10 c++ unit-testing googletest

我正在使用Google Test来测试我的C++项目.但是,有些情况需要访问argc和argv才能加载所需的数据.

在该main()方法中,初始化时,将argc和argv传递给测试的构造函数.

testing::InitGoogleTest(&argc, argv);
Run Code Online (Sandbox Code Playgroud)

我如何在测试后期访问它们?

TEST(SomeClass, myTest)
{
  // Here I would need to have access to argc and argv
}
Run Code Online (Sandbox Code Playgroud)

sbi*_*sbi 10

我不知道谷歌的测试框架,所以可能有更好的方法来做到这一点,但这应该做:

//---------------------------------------------
// some_header.h
extern int my_argc;
extern char** my_argv;
// eof
//---------------------------------------------

//---------------------------------------------
// main.cpp
int my_argc;
char** my_argv;

int main(int argc, char** argv)
{    
  ::testing::InitGoogleTest(&argc, argv);
  my_argc = argc;
  my_argv = argv;
  return RUN_ALL_TESTS();
}
// eof
//---------------------------------------------

//---------------------------------------------
// test.cpp
#include "some_header.h"

TEST(SomeClass, myTest)
{
  // Here you can access my_argc and my_argv
}
// eof
//---------------------------------------------
Run Code Online (Sandbox Code Playgroud)

Globals并不漂亮,但是如果你拥有的是一个测试框架,它不允许你将一些数据main()传递给你拥有的任何测试函数,那么他们就可以完成这项任务.