Тестування в треку C

Дізнайтеся, як тестувати вправи з C на Exercism


Кожна вправа надає модульні тести й рецепт збірки для Make. Реалізацію пишемо ми.

Кожен тестовий файл призначений для компонування з нашою реалізацією, щоб утворити консольний виконуваний файл, який запускає тести. Запуск виконуваного файлу з тестами виводить повідомлення про кожен тест, що не пройшов, і повертає ненульовий код завершення, коли тести не проходять.

Щоб пропрацювати вправу:

  • Створюємо початкову збірку за допомогою Make
  • Для кожного модульного тесту:
    • Прибираємо рядок TEST_IGNORE().
    • Усуваємо всі помилки компіляції, щоб змусити тест провалитися.
    • Реалізуємо рівно стільки, щоб тест пройшов.
    • Переробляємо реалізацію, щоб підвищити читабельність, позбутися дублювання тощо.

Компіляція та запуск тестів

Кожна вправа містить файл makefile разом із файлом .c з модульними тестами. Редагувати файл Make, найімовірніше, не доведеться. Наданий файл Make припускає, що реалізація складається із заголовного файлу (.h) і файлу з кодом (.c), названих за іменем вправи.

Наприклад, вправа bob приймає реалізацію у bob.h і bob.c. У вправах із дефісами в назві файли з кодом, як передбачається, уживають підкреслення, тож word-count приймає word_count.h і word_count.c. Можна вирішити, що реалізація досить проста й цілком поміщається в заголовному файлі, і тоді файл .c можна опустити.

Створюємо початкові файли реалізації до запуску Make. Якщо під час запуску Make для вправи bob файлів bob.h і bob.c немає, Make видасть помилку про те, що файлів не знайдено. Ці файли можуть бути порожніми, але вони мусять існувати.

Збірка коду

Найпростіший спосіб зібрати код - скористатися командою make у командному рядку (CLI). У Linux CLI доступний у bash чи подібних оболонках, у MacOS скористаймося Terminal. У Windows 10 доступний Bash із Windows Subsystem for Linux (WSL).

Щоб це зробити, вважаємо, що поточний каталог і є каталогом вправи:

$ make

Це скомпілює код і запустить тести.

У makefile також є збірка, яка перевіряє деякі типові помилки: витік памʼяті та вихід за межі масиву. Щоб запустити ці перевірки, введімо в командному рядку таку команду:

$ make memcheck

Прибирання

Щоб прибрати після збірки, можна попросити make видалити всі результати збірки, разом із виконуваним файлом:

$ make clean

Альтернативна збірка на MacOS

На MacOS можна також скористатися Xcode. Щоб зібрати код, виберімо Build у панелі інструментів.