Модульное тестирование кода AC, который записывает файлы в определенном каталоге

Я написал код C, который принимает путь к каталогу и строку s. После открытия каталога код ищет файлы с определенным расширением и записывает строку, заданную в качестве второго аргумента, в последнюю строку этих файлов и \ n после нее. Это все, что делает моя функция (поиск файлов с определенным расширением и запись чего-либо в конец файла). Код на C для этой функции готов, но мне нужно написать несколько тестов для этой функции с использованием Cunit, и у меня нет идеи, как их написать. Я только что записал то, что я хочу протестировать (ниже), но я не знаю, как написать их с помощью Cunit. Кто-нибудь может мне помочь с этим? Спасибо

  • проверить, проверяет ли пользователь, что строка 's' равна nULL => ошибка сегментации
  • проверить, указан ли неверный адрес аргумента пути функции при отсутствии файла ".extension"
  • проверьте, сравнивает ли strcmp ".extension", а не "extension"
  • проверьте, использует ли пользователь == вместо strcmp для сравнения расширения
  • проверить, написана ли строка 's' на новой строке
  • проверить размер строки 's', отправленной на запись => отправлено без \0 по strlen, и тип это size_t
  • проверить, открыт ли файл для записи (и не только для чтения)
  • проверьте, преобразуется ли строка 's' в void*, перед тем как дать ей написать функцию
  • проверить, проверяется ли возвращаемое значение open ("fd")
  • проверить, проверяется ли возвращаемое значение открытия каталога (ноль или нет)
  • проверить, проверяется ли возвращаемое значение чтения каталога (ноль или нет)
  • проверить, проверено ли расширение (строка 's' добавлена ​​не ко всем файлам с другими расширениями
  • проверьте, не игнорирует ли функция символ "." et '..' каталоги => DT_REG
  • проверить, если файл закрыт после открытия
  • проверьте возвращаемое значение close
  • проверьте, закрыт ли каталог после открытия
  • проверьте возвращаемое значение каталога

1 ответ

Модульные тесты - это своего рода функции драйвера (например, main ()) для вашего кода, т. Е. Учтите, что вы написали функцию foo. В foo вы должны правильно обращаться с каждой вещью / делом.

Когда вы закончите с этим, вам нужно проверить его с помощью модульного теста, который передаст различные аргументы в foo и сообщит вам, работает ли все правильно или нет.

проверить, проверяет ли пользователь, что строка 's' равна nULL => ошибка сегментации

проверить, указан ли неверный адрес аргумента пути функции при отсутствии файла ".extension"

проверьте, сравнивает ли strcmp ".extension", а не "extension"

и т.д. этот вид проверок должен быть записан в вашей функции foo

Рассмотрим пример.

int divide(int numerator, int denominator) {

if (denominator == 0)
      return -1; 
else 
      return numerator/denominator;
}

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

void main(void) {

/* Pass correct arguments and expect it will return positive */ 
assert(divide(10, 2) > -1);
printf("Test passed for correct arguments\n");


/* Pass wrong arguments and expect it will return -1 */ 
assert(divide(10,0) == -1); 
printf("Test passes for wrong arguments\n);

}

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

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