什么是 MockCpp?
MockCpp 是一个用于 C++ 的轻量级 mock 框架,常用于单元测试中模拟类或接口的行为。 它允许开发者在不依赖真实实现的情况下,对成员函数进行打桩(stubbing)和期望(expectation)设置, 从而验证被测代码是否按预期调用依赖对象。
成员函数模拟示例
以下是一个使用 MockCpp 模拟成员函数的典型例子:
#include <mockcpp/mockcpp.hpp>
#include <cassert>
class Calculator {
public:
virtual ~Calculator() = default;
virtual int add(int a, int b) = 0;
};
MOCK_CLASS(MockCalculator, Calculator) {
MOCK_METHOD(add, int(int, int));
};
int main() {
MockCalculator mockCalc;
EXPECT_CALL(mockCalc, add(2, 3)).will(returnValue(5));
assert(mockCalc.add(2, 3) == 5);
return 0;
}
关键特性
- 支持虚函数的模拟(需继承自基类)
- 可设置参数匹配规则(如任意值、特定值等)
- 支持返回值、抛出异常、调用次数验证等行为控制
- 无需修改生产代码即可进行隔离测试
注意事项
- 被模拟的成员函数必须是 virtual 的。
- MockCpp 通常需要配合编译宏或链接选项使用,请参考78TP文档配置构建环境。
- 在大型项目中,建议结合 Google Test 或其他测试框架使用。