Проверка статической функции после рефактора "Извлечь метод" из более крупной функции

У меня есть большая функция, например:

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

0 ответов

Другие вопросы по тегам