Структурирование процедурного кода для юнит-тестов

Если вы планируете написать модульные тесты для программы на C, каково соглашение о размещении основной функции? Поместите ли вы его в отдельный файл с функциями в другом файле, чтобы вы могли включить файл функций в тест, не конфликтуя с двумя основными методами? Это имеет смысл для меня, но просто интересно, существует ли определенное соглашение.

Я спрашиваю, потому что у нас есть несколько программ SQR, которые трудно поддерживать, и я хотел бы попробовать их тестирование, но мне нужен способ вызова функций из другого файла, поэтому я решил, что мой первый Шаг будет взять раздел begin-program - end-program и поместить его в отдельный файл.

1 ответ

Решение

Рекомендуется использовать среду модульного тестирования, такую ​​как Check, Cmocka и т. Д. В этих средах предлагается множество полезных функций и макросов тестирования, а также используется модуль модульного тестирования, который обрабатывает отчеты о сбоях. Фреймворк, такой как CUnit, также изолирует тесты друг от друга, разветвляя их, что защищает жгут проводов от переполнения буфера и предотвращает взаимодействие тестов друг с другом.

Если вы хотите или должны делать свои собственные действия, я бы поместил код "Harness" в один модуль c и поместил модульные тесты в отдельный файл. Вы также хотели бы, чтобы тесты регистрировались в жгуте, а не наоборот. Возможно, тогда вы могли бы повторно использовать код проводки в другом месте, если на вашей платформе нет портированных на нее других платформ модульного тестирования.

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