我们将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/