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

时间:2016-01-12 12:23:03

标签: c++ dll shared-libraries googletest

我在exe

中有这样的代码
int main(int argc, char** argv){ 
if(argc>1)
{
//do something
}
else
{
StartGoogleTest(argc ,argv);
}
}

StartGoogleTest位于共享库中。我必须通过命令行参数来启动或初始化谷歌测试框架。 以下是StartGoodleTest.cpp

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

  return RUN_ALL_TESTS();
}

此代码在InitGoogleTest崩溃。有没有办法初始化谷歌测试没有命令行参数或任何其他方式来初始化谷歌测试没有主?

1 个答案:

答案 0 :(得分:1)

您的int StartGoogleTest(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } 功能是问题,请按以下方式更改:

StartGoogleTest

对于没有main的初始化,答案是否定的。您可以将函数StartGoogleTest放在共享库中,但在某些时候您必须创建一个带有main函数的可执行文件,该函数必须与该库链接并调用</table><table align="left" width="288" height="329" border="0" cellpadding="0" cellspacing="0"> (在main或在一些子例程中)初始化googletest并运行测试用例。