Модульное тестирование для выхода () в C

Никто не ответил на настоящий «вопрос» здесь: вы преобразовываете int в char правильно; в таблице ASCII десятичное значение 01 является «началом заголовка», непечатаемым символом. Попробуйте найти таблицу ASCII и преобразовать значение int между 33 и 7E; который даст вам персонажей, на которые нужно смотреть.

2
задан sparklycamel 23 January 2019 в 02:50
поделиться

2 ответа

Один аспект, который может быть рассмотрен при наличии проблем / повышенных усилий в отношении тестирования, заключается в том, есть ли возможность изменить тестируемую программу каким-либо образом, что поможет в тестировании без существенного увеличения сложности кода. [110 ]

В этом случае есть ли возможность заменить вызовы exit () на коды возврата ошибок из функций, чтобы вызывающие абоненты могли выполнять такие действия, как приведение в порядок или состояние журнала, перед тем, как фактически завершить работу? Если это так, то это одновременно упрощает тестирование и, вероятно, упростит поиск ошибок, когда код фактически используется в выпуске / производстве, так как может быть довольно сложно понять, почему программа просто «взлетает» и умирает, особенно если код спрятан в библиотечной функции!

0
ответ дан Gwyn Evans 23 January 2019 в 02:50
поделиться

Просто, чтобы вы знали, что искать, то, что вы хотите сделать, это «высмеять» вызов exit(). Основная идея состоит в том, чтобы выбрать другую реализацию для функции выхода, как правило, во время компиляции. Честно говоря, C не делает это особенно легко, но есть несколько вариантов с различными уровнями переносимости и навязчивости.

В этой статье описывается что-то довольно портативное, но и довольно навязчивое. По сути, вы используете макросы и / или указатели функций для переключения назад и вперед, что означает небольшую модификацию вашего кода, но, честно говоря, это не так уж сложно.

Для чего-то потенциально менее навязчивого, но и гораздо менее переносимого, в этой статье есть пара идей (я думаю, что оба будут работать на MacOS). Здесь вы получаете компоновщик для перенаправления вызова exit() на другую функцию, которую вы предоставляете. Хорошей новостью является то, что он не требует каких-либо изменений в вашем коде. Плохая новость заключается в том, что он требует от вас взаимодействия с компоновщиком и не будет работать везде (LD_PRELOAD не будет работать в Windows, а AFAIK --wrap требуется GNU ld или что-то совместимое).

0
ответ дан nemequ 23 January 2019 в 02:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: