Дразнить файловую систему в C - PullRequest
1 голос
/ 17 декабря 2011

Я начинаю писать простую программу на C и хотел бы сохранить конфигурацию на диске. Чтобы упростить правильное и правильное модульное тестирование, я хотел бы сделать что-то, чтобы тестируемый код не читал и не записывал на диск.

Формат файла конфигурации, в качестве аргумента, является YAML.

API к программе может выглядеть примерно так:

myapp config

Будет сбрасывать весь конфиг. (где есть уже существующий файл конфигурации / макет)

myapp config server

Выводит подраздел сервера. (где есть уже существующий файл конфигурации / макет)

myapp config server=example.com

Запишет файл с новым значением (будь то или нет есть уже существующий файл)

Внутренне конфигурация - это просто структура с несколькими ключами, хостом сервера, портом сервера и именем пользователя, из которого можно выполнить некоторые вызовы API.

Меня совершенно не беспокоит положение файла на диске (в каталоге) или синтаксический анализ getopt / CLI, для меня важно просто то, как имитировать сетевые операции и операции с файловой системой.

Вопрос идет на один шаг дальше, и здесь задается вопрос, какие методы можно использовать, чтобы заглушить сеть .

Я, скорее всего, буду использовать cmockery и libcurl.

Одной из моих первых мыслей было: «Может быть, я должен создать такую ​​функцию, как read_configuration_file(), которую я могу смоделировать в своих модульных тестах», но я действительно не уверен в достоинствах этого, код в ruby, чтобы заглушить Файловая система может быть такой простой, как:

File.stubs(:read).with('./configuration.yml').returns("---\nserver: example.com\n")

И, исходя из этого фона, думая в C терминах, я нахожу довольно трудным.

Я заметил, что не многие люди, кажется, тестируют этот материал на C, или, в частности, если они это делают - они не пишут об этом.

Примечание: Это не домашнее задание, оно просто звучало так, будто после того, как я написал все это, я на самом деле просто пытаюсь изучить C, исходя из Ruby-фона. ; Вы могли бы заметить некоторые другие мои вопросы на тему попыток сделать C «правильными».

Ответы [ 2 ]

0 голосов
/ 17 декабря 2011

Возможно, вы захотите посмотреть, что сделали разработчики для CUNIT, и посмотреть, сможете ли вы изобрести заново часть колеса

http://sourceforge.net/projects/cunit/

0 голосов
/ 17 декабря 2011

Я думаю, что ваша предпосылка

"Чтобы облегчить правильное и правильное юнит-тестирование, я бы хотел сделать что-то, чтобы предотвратить чтение кода из тестируемого кода, и запись на диск. "

неправильно. Вы всегда можете организовать запуск тестов из только что созданного пустого каталога или из любого заранее подготовленного состояния, которое вам может потребоваться. Как это может как-то повлиять на правильность тестов?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...