我有一个很大的功能,如下所示:
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、cmock