如何在没有 main 的情况下初始化 google 测试?

How to initialize google test without main?

我在 exe 中有这样的代码

int main(int argc, char** argv){ 
if(argc>1)
{
//do something
}
else
{
StartGoogleTest(argc ,argv);
}
}

StartGoogleTest 在共享库中。我必须传递命令行参数来启动或初始化 google 测试框架。 以下是StartGoodleTest.cpp

TEST(SomeClass, myTest)
{
  //some code 
}
StartGoodleTest(int &argc, char** &argv)
{
  testing::InitGoogleTest(&argc, argv);

  return RUN_ALL_TESTS();
}

此代码在 InitGoogleTest 崩溃。有没有什么方法可以在没有命令行参数的情况下初始化 google 测试,或者有什么其他方法可以在没有 main 的情况下初始化 google 测试?

你的StartGoogleTest函数有问题,改成这样:

int StartGoogleTest(int argc, char** argv)
{
    testing::InitGoogleTest(&argc, argv);

    return RUN_ALL_TESTS();
}

就没有 main 的初始化而言,答案是否定的。您可以将函数 StartGoogleTest 放在共享库中,但在某些时候您将必须创建一个带有主函数的可执行文件,该函数必须 link 使用该库并调用 StartGoogleTest (在主要或某些 sub-routine) 中初始化 googletest 和 运行 测试用例。