Проверка статической функции после рефактора «Извлечь метод» из более крупной функции - PullRequest
0 голосов
/ 13 декабря 2018

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

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

...