Проверка статической функции после рефактора "Извлечь метод" из более крупной функции
У меня есть большая функция, например:
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