Модульное тестирование кода 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);
}
В случае сбоя ваших ожидаемых значений, тест не пройден, и ваша функция деления неверна. Надеюсь, что это поможет вам.