我正在使用 boost::test,需要使用一个mocking framework。 有人有什么推荐吗?
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);
还有许多其他功能可供探索。继续前进并尝试一下。
我最近在为我的最新项目寻找单元测试和模拟框架,最终选择了Google Mock。它有最好的文档,并且似乎功能相当齐全(虽然我还没有创建非常复杂的模拟对象)。我最初考虑使用boost::test
,但最终选择了Google Test(即使您使用其他测试框架,我认为这是使用Google Mock的先决条件)。它也有很好的文档,并具有我预期的大多数功能。
GoogleMock有一个关于如何与其他测试框架配合使用的部分。