C单元测试框架,支持模拟嵌套函数

时间:2014-11-11 11:03:34

标签: c unit-testing mocking

我在C中寻找一个单元测试框架,它支持在函数内部模拟辅助函数。

实施例: 我有两个函数,函数A和函数B,它们都在同一个源文件中。 函数B在函数A中调用。 我正在寻找一个框架,使我能够在从函数A调用时模拟函数B.

目前我们使用cmockery,但它不支持此功能。

任何想法都会很棒。

2 个答案:

答案 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_...,这允许您注入代码以将调用转移到模拟或实际函数。