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

新手上路,请多包涵

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

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

 testing::InitGoogleTest(&argc, argv);

我如何在稍后的测试中访问它们?

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

原文由 Nils 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 885
1 个回答

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

 //---------------------------------------------
// 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
//---------------------------------------------

全局变量并不漂亮,但是当您拥有的只是一个测试框架,它不允许您将一些数据从 main() 隧道传输到您拥有的任何测试功能,它们就可以完成这项工作。

原文由 sbi 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题