У меня есть большая функция, такая как:
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
, поскольку мне приходится загромождать тесты всеми обратными вызовами обработки сообщений, ожиданиями и т. Д., Без всякого смысла, поскольку он уже проверен сам по себе..
После некоторых комментариев я думаю, что наилучшим подходом было бы перенести эти методы на новый class
, сделав их public
там, но не публикуя класс, чтобы его можно было проверитьнезависимо от остальных.
Итак, мой вопрос сейчас:
- Как я могу реализовать этот подход в
plain C
?
Этот вопросс точки зрения организации кода (разбиение на несколько файлов и т. д.) и с точки зрения полезных для этого вопроса флагов компилятора / компоновщика.
Мои настройки: gcc, cmake, unity, cmock