【发布时间】:2011-07-20 09:15:34
【问题描述】:
我正在使用 boost::test 并且需要使用一个模拟框架。有人有什么建议吗?
【问题讨论】:
我正在使用 boost::test 并且需要使用一个模拟框架。有人有什么建议吗?
【问题讨论】:
Fake-It 是一个简单的 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);
还有更多功能可供探索。继续give it a try。
【讨论】:
我最近为我的最新项目搜索了单元测试和模拟框架,并选择了Google Mock。它有最好的文档,而且功能似乎相当不错(尽管我还没有创建非常复杂的模拟对象)。我最初考虑使用boost::test,但最终改用Google Test(我认为这是Google Mock 的先决条件,即使您使用其他测试框架也是如此)。它还具有良好的文档,并具有我所期望的大部分功能。
【讨论】:
你可以试试Turtle!
【讨论】:
Here 你有一个使用 Google Mock 和 Boost Test 的例子。我更喜欢 Boost Test,因为我经常使用其他 Boost libraries。
【讨论】:
GoogleMock 有一节介绍如何与another framework 一起使用。
【讨论】:
ELFSpy 让您在运行时用替代实现替换(模拟)函数、方法、虚拟函数等。
【讨论】: