Найти тему
JavaGuru

Виртуальная Стажировка (Java): Unit testing (Юнит тестирование)

Юнит тестирование это эффективный инструмент для нахождения ошибок в программном коде. Он позволяет выбрать один класс и подвергнуть
его всестороннему тестированию.

Но, к сожалению на практике юнит тестирование очень часто сводится к простому happy path тесту. Все говорят, что тесты нужны, что надо тестировать
свой код, но как писать эффективные и качественные тесты мало кто знает и еще меньше применяют это знание на практике.

Во первых юнит тесты это часть вашего проекта. Вы тратите на их создание время. Значит они должны быть полезны! Не имеет смысла добавлять в проект
бесполезные вещи.

Как сделать юнит тесты по настоящему полезными?

Юнит тест должен проверять выполнение требований предъявляемых к классу, а не его код. Хороший юнит тест проверяет выполнение одного требования. Набор юнит тестов проверяет выполнение всех требований предъявляемых к классу. Тогда юнит тесты образуют спасательную сеть. Если код в классе перестанет выполнять одно из требований юнит тесты это обнаружат.

Еще одно применение юнит тестов это контроль качества кода. Вы не ослышались! Юнит тесты способны контролировать качество кода. Но как? Очень просто! Если юнит тесты на класс написать просто значит код в классе хороший. Если юнит тесты на класс писать трудно, значит код в классе требует улучшений.

Тесты на класс, который следует SRP (Single Responsibility Principle) написать просто и легко. Тесты на класс из 10 - 50 строк кода написать можно за 5 - 10 минут. Как только класс перестает следовать принципу SRP и разрастается в
размерах (что часто встречается в реальных проектах) написание юнит тестов становится проблемной задачей и занимает значительно больше времени. Это должно служить сигналом к тому, что код в классе требует улучшения, его пора подвергнуть рефакторингу.

Работая над проектом
Виртуальная Стажировка (Java) мы учимся писать эффективные юнит тесты, фиксировать с помощью них требования к классам и контролировать качество кода.

Курс Виртуальная Стажировка (Java):
https://stepik.org/course/210937

Телеграмм группа проекта Виртуальная Стажировка (Java):
https://t.me/+mvRhG9YECTlkZjQ0

Moving Java Forward {JG}