Дізнайтеся, як тестувати свої вправи з C++ на Exercism
Кожна вправа містить модульні тести та рецепт збірки CMake. Реалізацію пишемо ми. Кожен файл тестів призначений для компонування з нашою реалізацією, щоб утворити консольний виконуваний файл, який запускає тести. Запуск цього виконуваного файлу виводить повідомлення про кожен невдалий тест і повертає ненульовий код виходу, коли тести не проходять.
Примітка: Кожного разу, коли ми збираємо свій проєкт, код перевіряється набором тестів. Якщо код не проходить один чи кілька тестів, але є коректним кодом C++, його все одно буде скомпільовано.
Робота над кожною вправою складається з таких кроків:
Кожна вправа містить файл CMakeLists.txt разом із модульними тестами. У ньому
є готовий рецепт CMake, який виконує збірку за нас. Редагувати цей файл не
потрібно. Наданий рецепт припускає, що наша реалізація складається із заголовного
файлу та файлу коду, названих за вправою.
Наприклад, вправа bob очікує реалізацію у файлах bob.h і bob.cpp. Для
вправ із дефісами в назві вважається, що файли коду використовують підкреслення,
тож вправа word-count очікує word_count.h і word_count.cpp. Може
виявитися, що реалізація досить проста і її можна повністю розмістити в
заголовному файлі, і тоді файл cpp можна не створювати.
Створіть початкові файли реалізації перед запуском CMake. Якщо під час
запуску CMake для вправи bob файлів bob.h і bob.cpp немає, CMake видасть
помилку про те, що файлів не знайдено. Ці файли можуть бути порожніми, але
вони мусять існувати.
Скориставшись цим рецептом, можемо згенерувати за допомогою CMake відповідний
проєкт для свого середовища, запустивши cmake -G з потрібним генератором і
шляхом до каталогу вправи. CMake згенерує сценарій збірки, відповідний до нашої
операційної системи. Щоб відокремити ці згенеровані файли від коду вправи,
зазвичай створюють каталог build для згенерованих файлів збірки та
скомпільованого коду. Так папка вправи залишається незахаращеною й охайною.
Коли CMake створить середовище збірки, код можна зібрати відповідною командою для свого середовища:
make
make Якщо користуємося застосунком Exercism CLI
Нижче наведено приклади запуску CMake для різних середовищ.
Назва генератора для CMake - Unix Makefiles.
Припустімо, що ми працюємо з вправою bob і перебуваємо в її папці:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G "Unix Makefiles" ..
$ make
У цьому прикладі спочатку створюємо порожні файли реалізації, а потім запускаємо CMake.
Просто введіть make у каталозі збірки, щоб скомпілювати тести. Це має
породити помилки часу компіляції. Коли помилки виправлено, make збере та
запустить тести.
Visual Studio має вбудовану підтримку проєктів CMake, тож окремо встановлювати CMake чи запускати його поза Visual Studio не потрібно. Скористайтеся цим посібником, щоб налаштувати проєкт CMake у Visual Studio.
Назва генератора для CMake - Xcode.
Припустімо, що ми працюємо з вправою bob і перебуваємо в її папці:
$ touch bob.{h,cpp}
$ mkdir build
$ cd build
$ cmake -G Xcode ..
У цьому прикладі генеруються файли XCode, щоб можна було відкрити проєкт у XCode. Коли проєкт відкрито в XCode, може знадобитися додати ще одну ціль. Щоб створити нову ціль, перейдіть у меню до File -> New -> Target, виберіть OS X \ Application \ Command Line Tool -> Next, вкажіть C++ як мову й задайте назву цілі. Запускайте код за допомогою цілі.
Якщо термінал видає помилку Xcode x.x not supported, найімовірніше, Xcode не
встановлено на нашій машині або його версія застаріла.
Завантажте й встановіть Xcode з App Store або за цим посиланням.
Помилки на кшталт The CXX compiler identification is unknown найімовірніше
зникнуть, якщо скористатися інструкціями зі встановлення GCC
або додати ще одну ціль у Xcode, як описано вище.
Назва генератора для CMake - Unix Makefiles.
Припустімо, що ми працюємо з вправою bob і перебуваємо в її папці:
$ touch bob.{h,cpp}
$ cmake -G "Unix Makefiles" .
$ exercism test
У цьому прикладі ми справді створюємо порожні файли реалізації перед запуском
CMake, але не створюємо порожній каталог збірки.
Річ у тім, що Exercism CLI використовує файл .exercism/metadata.json у
кореневому каталозі, щоб розібрати тестові випадки.
Просто введіть exercism test у кореневому каталозі, щоб скомпілювати тести.
Це має породити помилки часу компіляції.
Коли помилки виправлено, повторний запуск exercism test збере та виконає тести
за допомогою Exercism CLI.