我在C中寻找一个单元测试框架,它支持在函数内部模拟辅助函数。
实施例: 我有两个函数,函数A和函数B,它们都在同一个源文件中。 函数B在函数A中调用。 我正在寻找一个框架,使我能够在从函数A调用时模拟函数B.
目前我们使用cmockery,但它不支持此功能。
任何想法都会很棒。
答案 0 :(得分:4)
我们使用Typemock Isolator ++,因为您不必更改生产代码。
参见示例:
void FunctionB()
{
throw "error";
}
void FunctionA()
{
FunctionB();
}
TEST_CLASS(GlobalCMethods)
{
public:
TEST_METHOD(MockingGlobalFunction)
{
FAKE_GLOBAL(FunctionB);
FunctionA();
}
};
答案 1 :(得分:1)
您可以尝试使用C预处理器:
CALL(func)(...);
通常,宏会扩展为参数
#define CALL(f) f
要启用模拟,请使用
#define CALL(f) mock_##f
现在每个函数调用都将被重定向到mock_...
,这允许您注入代码以将调用转移到模拟或实际函数。