较大功能的“提取方法”重构后测试静态功能

时间:2018-12-13 12:48:17

标签: c unit-testing testing cmock unity-test-framework

我有一个很大的功能,如下所示:

void processMsg(uint8_t *msg) {
    //Some structure initialisation, msg parsing and the like

    for (int i=0;i<msgRegisters;++i) {
        //Process each message register
    }
}

并且我已经将代码重构,提取了一种方法,如下所示:

static void processMsgRegister(uint8_t *msg, int i)
{
    //Process one register
}

void processMsg(uint8_t *msg) {
    //Some structure initialisation, msg parsing and the like

    for (int i=0;i<msgRegisters;++i) {
        processMsgRegister(msg, i);
    }
}

现在,我要对该功能进行单元测试。

由于processMsg可以从.h公开获得,所以我可以轻松地对其进行测试,并且我已经进行了必要的测试,以检查结构的初始化和解析是否正确。

问题来自测试processMsgRegister内部函数。我想单独测试它,而不必每次都测试所有processMsg外部函数,因为我必须使用所有msg处理回调,期望值来使测试混乱,所以,毫无疑问,因为它已经过测试


经过一番评论,我认为最好的方法是将该方法移至新的class,使其在此处public,但不发布该类,因此可以独立于该类进行测试。休息。

所以我的问题是:

  • 如何在plain C中实现这种方法?

从代码组织的角度(分为多个文件等),到从有用的编译器/链接器标志的角度来看,这个问题都是如此。

我的设置:gcc,cmake,Unity,cock

0 个答案:

没有答案