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

时间:2011-03-10 14:18:47

标签: c++ unit-testing googletest

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

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

testing::InitGoogleTest(&argc, argv);

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

TEST(SomeClass, myTest)
{
  // Here I would need to have access to argc and argv
}

3 个答案:

答案 0 :(得分: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
//---------------------------------------------

Globals并不漂亮,但是当你拥有的是一个不允许你将某些数据从main()隧道传输到你拥有的任何测试函数的测试框架时,他们就能胜任。

答案 1 :(得分:1)

如果使用Visual Studio在Windows上运行,则可以在__argc和__argv中使用。

答案 2 :(得分:0)

测试可执行文件的命令行参数用于测试框架,而不是用于测试。通过它们,您可以设置--gtest_output--gtest_repeat--gtest_filter等内容。测试首先应该是可再现的,如果它依赖于使用“正确”参数的人,则不是。

无论如何,你想要达到什么目标?