c - 在较大函数的“提取方法”重构后测试静态函数
问题描述
我有一个很大的功能,如下所示:
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
解决方案
推荐阅读
- docker - 赛普拉斯无法验证 localhost,即使它已启动并正在运行
- javascript - 使用另一个 JS 文件修改 JS 文件
- python - 如何在 SQLite(在 Jupyter Notebook 上)中显示自定义结果名称?
- c++ - 类中的私有向量
- crash - Visio 加载项崩溃,错误模块名称:ntdll.dll
- r - 匹配来自 2 个列表(向量..)的 Dataframe 中的文本
- python-3.x - PySimpleGUIQt 系统托盘图标多次出现多处理
- javascript - 将值从数组映射到不同的数组类型
- ios - tvOS 模拟器是否支持 Sign in with Apple (SIWA)?
- apache-spark - PySpark:将 Spark Dataframe 写入 Kafka 主题