Boost::test和模拟框架

10

我正在使用 boost::test,需要使用一个mocking framework。 有人有什么推荐吗?

6个回答

13

Fake-It是一个简单的C++模拟框架,利用最新的C++11特性创建具有表现力(但非常简单)的API。使用FakeIt,无需重新声明方法或为每个模拟创建派生类,并且它具有内置的boost::test集成。以下是如何使用Fake-It:

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);

还有许多其他功能可供探索。继续前进并尝试一下


9

我最近在为我的最新项目寻找单元测试和模拟框架,最终选择了Google Mock。它有最好的文档,并且似乎功能相当齐全(虽然我还没有创建非常复杂的模拟对象)。我最初考虑使用boost::test,但最终选择了Google Test(即使您使用其他测试框架,我认为这是使用Google Mock的先决条件)。它也有很好的文档,并具有我预期的大多数功能。


6
你可以尝试使用Turtle

1
乌龟编程有哪些优势? - Peter DeWeese
嗯,它很容易与boost::test集成:您不需要所有必需的解决方法来使boost::test项目使用gmock(例如,请参见http://stackoverflow.com/questions/38890959/initgooglemock-causes-memory-leak-with-boosttest?noredirect=1#comment65142935_38890959)。 - Ioanna
1
海龟绘图库的文档简洁到几乎没有内容,我认为这并不是一个优点。使用海龟绘图库很困难。 - user140327

6

这里有一个使用Google Mock和Boost Test的示例。我更喜欢使用Boost Test,因为我经常使用其他Boost库


2

确实如此,但它仍然存在内存泄漏问题,并需要解决方法:http://stackoverflow.com/questions/38890959/initgooglemock-causes-memory-leak-with-boosttest?noredirect=1#comment65142935_38890959 - Ioanna
链接已失效。 - Mariusz Jaskółka

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接