> For the complete documentation index, see [llms.txt](https://interlink.gitbook.io/process/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://interlink.gitbook.io/process/dev/development/engineering-practice/unit-testing.md).

# Юніт тестування

Юніт тестування (UT) має на увазі написання тестів для розроблюваних функцій. Слово Unit означає клас, таким чином завдання юніт тесту – переконатися в роботі методу конкретного класу. UT сприяє мінімізації дефектів, що з’являються при розробці нових функцій і пов’язаних з нестачею часу для ретесту старої функціональності (регресії).

Юніт тестування (як і рефакторінг) не виділяється в окремі завдання на проєкті і оцінюється спільно з корисною для замовника функцією (фічею).

При написанні юніт тестів віддають перевагу швидкості їх проходження тому обкладають mock/stub об’єктами всі довготривалі операції (наприклад, юніт тести не звертаються до БД). Часто всередині тестових фреймворків зашивають правило 2-х секунд, за які тест повинен виконатися.

При наявності юніт тестів на проєкті вони повинні запускатися перед заливкою в репозиторій і після отримання з репозиторію. Код в репозиторії повинен бути з 100% підхожими тестами. Для автоматизації цього процесу використовується [Continuous Integration](broken://pages/-Lk7p9wq8pYRCzJc3KLd)

Використання Behaviour Driven Development дозволяє структурувати тести в зрозумілому замовнику вигляді слідуючи [Метафорі](/process/process/development-process/metaphor.md) системи.

Використання Test Driven Development дозволяє розробляти continuous архітектуру додатку і сприяє написанню якіснішого програмного коду (придатність до тестування один з показників якісного коду).

* <https://blog.softwareplanetgroup.co.uk/2017/08/03/why-we-advocate-test-driven-development/>
* Книга Шаблоны тестирования xUnit by Gerard Meszaros
* Книга Искусство автономного тестирования на C#. Рой Ошероув
