首页 > 解决方案 > 在较大函数的“提取方法”重构后测试静态函数

问题描述

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

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在那里,但不发布该类,因此它可以独立于其他方法进行测试。

所以我现在的问题是:

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

我的设置:gcc、cmake、unity、cmock

标签: cunit-testingtestingcmockunity-test-framework

解决方案


推荐阅读