Дізнайтеся, як тестувати свої вправи з Pharo на Exercism
У найпростішому розумінні Exercism тримається на тестах і тестуванні, адже саме вони рухають нашу реалізацію вперед і підказують, коли вправу завершено.
Pharo має чудову підтримку роботи з тестами та інкрементального тестування! Будь-який тест вправи можна запустити, натиснувши на кульку поруч із класом або методом тестового випадку.

Кульки тестів забарвлюються відповідно до результату останнього запуску тестів:
Тести у вправах Exercism навмисно пронумеровано, щоб задати визначений порядок виконання (наприклад, test01_verifySomeProperty, test02_verifyAnotherProperty тощо).
Працюючи над вправою, варто натиснути на кульку першого тесту, розібратися, у чому полягає невдача і що потрібно, щоб його пройти, а потім додати до рішення код, який це забезпечить. У Pharo цілком нормально вносити ці зміни прямо в налагоджувачі, де доступний і редактор коду, і перегляд усіх змінних та параметрів, які допомагають зрозуміти проблему.
ЗАУВАЖЕННЯ: позначати тести префіксом із порядковим номером не є звичною практикою, і НЕ варто робити цього, пишучи тести для власного проєкту.
Pharo охоче запускається з кодом, який зламано, а налагоджувач просто відкриється знову, коли трапиться помилка (синтаксична помилка, хибне значення або навіть відсутній клас чи метод). Цей підхід значною мірою вплинув на розробку через тестування, і його можна скуштувати, спробувавши запустити перший тест будь-якої вправи. Налагоджувач одразу покаже, що клас нашого рішення не знайдено (адже ми ще нічого не написали). Зручно, що є кнопка «Create», яка допомагає додати відсутній клас і продовжити виконання, доки воно не завершиться або не трапиться наступна помилка.

На першому тесті ми натрапляємо на другу помилку, бо методів ще не написано. І знову кнопка «Create» в налагоджувачі дає змогу визначити метод і продовжити виконання. На цьому етапі можна також перейти нижче стеком викликів, переглянути вимоги тесту, що не проходить, і змінити новий метод, щоб тест пройшов.
Пізніше, у процесі розробки, може стати в пригоді перейти далі назад стеком і скористатися кнопкою «Restart», щоб відновити виконання програми з ранішої точки, а потім покроково пройтися програмою і побачити, що відбувається. Це важливий і корисний спосіб зрозуміти, чому програма не працює.
Окрім перегляду змінних у налагоджувачі, можна також виділити будь-яку інструкцію й натиснути inspect/print, щоб побачити результат її обчислення. Це буває корисно, коли перевіряємо результати методу або досліджуємо внутрішній стан обʼєкта.

Не забуваймо, що в налагоджувачі можна також змінювати код наживо, і збереження зміни просто перезапустить виконання методу, який щойно збережено. Це дає змогу експериментувати зі змінами та бачити їхні результати, поки ми ще «в моменті».
Підсумовуючи: не біймося користуватися налагоджувачем у Pharo, ми вважаємо його цінним інструментом, який допомагає зрозуміти проблему та поекспериментувати з нею.
Якщо колись знадобиться запустити більші групи тестів, їх можна запустити з меню Package, а також скористатися інструментом Test Runner (він доступний із меню World або за комбінацією <meta> + OU).
Тести можна запускати й програмно з Playground, обчисливши та надрукувавши результат:
AllExercismTests suite run.
Якщо хочеться дізнатися більше про внутрішню будову тестів, можна почитати про SUnit або переглянути код в ієрархії TestCase.
Цікавий факт: TDD винайшли у Smalltalk завдяки появі бібліотеки тестування SUnit