C++ 测试和模拟框架

C++ 测试和模拟框架,c++,testing,boost,mocking,C++,Testing,Boost,Mocking,我正在使用boost::test,需要使用一个模拟框架。有人有什么建议吗?有一个关于与一起使用的部分。我最近为我的最新项目搜索了单元测试和模拟框架,并与之一起使用。它有最好的文档,而且功能相当完善(尽管我还没有创建非常复杂的模拟对象)。我最初打算使用boost::test,但最终使用了(我认为这是googlemock的先决条件,即使您使用了另一个测试框架)。它还有很好的文档,并且具有我所期望的大部分功能。您可以试试 您有一个使用GoogleMock和Boost测试的示例。我更喜欢Boost测试,

我正在使用boost::test,需要使用一个模拟框架。有人有什么建议吗?

有一个关于与一起使用的部分。

我最近为我的最新项目搜索了单元测试和模拟框架,并与之一起使用。它有最好的文档,而且功能相当完善(尽管我还没有创建非常复杂的模拟对象)。我最初打算使用
boost::test
,但最终使用了(我认为这是googlemock的先决条件,即使您使用了另一个测试框架)。它还有很好的文档,并且具有我所期望的大部分功能。

您可以试试

您有一个使用GoogleMock和Boost测试的示例。我更喜欢Boost测试,因为我经常使用其他。

是一个简单的模拟框架,C++使用最新的C++ 11特性创建一个表达(但非常简单)的API。 有了FakeIt,就不需要重新声明方法,也不需要为每个模拟创建派生类,它有一个内置的boost::test集成。 下面是你如何伪造它的:

struct SomeInterface {
  virtual int foo(int) = 0;
};

// That's all you have to do to create a mock.
Mock<SomeInterface> mock; 

// Stub method mock.foo(any argument) to return 1.
When(Method(mock,foo)).Return(1);

// Fetch the SomeInterface instance from the mock.
SomeInterface &i = mock.get();

// Will print "1"
cout << i.foo(10);
struct接口{
虚拟整数foo(int)=0;
};
//这就是创建模拟所需的全部操作。
模仿;
//存根方法mock.foo(任何参数)返回1。
When(方法(mock,foo))。返回(1);
//从模拟获取SomeInterface实例。
SomeInterface&i=mock.get();
//将打印“1”
coutELFSpy让您在运行时用替代实现替换(模拟)函数、方法、虚拟函数等


Turtle的优势是什么?它很容易与boost::test集成:例如,您不需要使boost::test项目使用gmock所需的所有变通方法(另请参见)。Turtle的文档非常简洁,甚至可以说是空的。我不认为这是一个优势。Turtle很难使用。确实如此,但它仍然容易出现内存泄漏,需要解决办法:链接已失效