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