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

标签 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 处崩溃。有没有什么方法可以在没有命令行参数的情况下初始化 google test,或者有什么其他方法可以在没有 main 的情况下初始化 google test?

最佳答案

您的 StartGoogleTest 函数有问题,将其更改为:

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

    return RUN_ALL_TESTS();
}

就没有 main 的初始化而言,答案是否定的。您可以将函数 StartGoogleTest 放入共享库中,但有时您必须创建一个具有主函数的可执行文件,该函数必须与该库链接并调用 StartGoogleTest (在主程序或某些子程序中)初始化 googletest 并运行测试用例。

关于c++ - 如何在没有 main 的情况下初始化 google 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34743599/

相关文章:

c++ - FPS 相机实现错误(OpenGL/GLUT/C++)

c++11 : Calling a variadic function with the elements of a vector, 并自动推断参数数量

c++ - begin(),end() 和 cbegin() , cend() 有什么区别?

c# - 在 C# 中使用 F# 作为 dll

c++ - 如何根据 DLL 端的请求卸载 DLL 模块?

c++ - 如何从动态库中调用未知函数?

c++ - 当两个共享库定义相同的符号时实际发生了什么?

c++ - Qt - 如何检测自动换行后行数的增加?

c - 在 Visual Studio 2012 中生成 .h 文件以及 DLL

linux - Google perftool 无法读取文件 "libprofiler.so.0"