我们将cppunit unittests构建为一个dll,并将其加载到TestPlugInRunnerd.exe中以显示结果。我们编写了自己的模拟程序,但我想开始使用诸如gmock之类的模拟框架。

我下载了gmock并链接了它,没有太多问题。我已经使用gmock编写了一个模拟文件,并且可以正常编译。但随后我在gmock常见问题中阅读了以下内容:

如果您想使用Google Test以外的其他东西(例如CppUnit或CxxTest)作为测试框架,只需将上一节中的main()函数更改为:

int main(int argc,char ** argv){
  //以下行会导致Google Mock在失败时引发异常,
  //测试框架会将其解释为测试失败。
  :: testing :: GTEST_FLAG(throw_on_failure)= true;
  :: testing :: InitGoogleMock(&argc,argv);
  ...无论您的测试框架需要什么...
}

这种方法有一个陷阱:它使Google Mock有时会从模拟对象的析构函数中抛出异常。对于某些编译器,这有时会导致测试程序崩溃。您仍然可以注意到测试失败,但这不是正常的失败。


我显然没有主管。我需要怎么做才能使gmock与我的dll一起使用?我应该考虑替代gmock吗?

谢谢,

巴里

最佳答案

首先,您不可能没有主电源。否则,您将如何执行单元测试?

其次,您可以创建一个类的静态变量,在其中调用这两个函数,如下所示:

struct GmockInitializer
{
  GmockInitializer()
  {
    ::testing::GTEST_FLAG(throw_on_failure) = true;
    ::testing::InitGoogleMock(0,0);  // << not sure about this. might not work
  }
};
GmockInitializer gmockInitializer;

关于c++ - TestPlugInRunnerd.exe + gmock,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5349777/

10-11 23:14