Hello, JUnit!

Юнит-тестирование (модульное тестирование) есть автоматизированное тестирование отдельных функций/классов в независимом окружении, то есть без использования сторонних классов или функций, от которых проверямый код зависит. Идея состоит в том, чтобы убедиться в постоянности поведения самого класса/функции, а не в том, как он взаимодействует с другим кодом.

JUnit — простой и популярный Java фреймворк для написания тестов.

Подготовка

Попросим maven содать пустой проект:

В пустом проекте не всё нас устраивает и поэтому придётся его слегка доработать. Во-первых сменим версию JUnit на более современную:

Во-вторых удалим сгенерированный тест, созданный для 3:

Приветствователь

По умолчанию maven создаёт класс, который здоровается с миром:

Но что, если мы хотим приветствовать другие миры кого-то другого? Давайте напишем класс приветствователя, который будет знать, кого
ему приветствовать:

Добавим новый класс в приложение:

И сразу же опробуем:

Тест

Каждый раз проверять, правильно ли работает код, довольно утомительно. Автоматизируем проверку с помощью теста:

Напоминаю, что по принятому в maven соглашению классы тестов должны лежать в src/test/java. В нашем случае это будет «src/test/java/ru/easyjava/junit/GreeterTest.java».

Писать тесты очень просто. Каждый ничего не возвращающий ( void ) публичный метод ( public ) с аннотацией @Test  является тестом. Внутри метода мы вызываем
метод Greeter.greet()  и сравниваем результат ( assertEquals ) его работы с образцом. Попробуем выполнить тест:

К сожалению тест провалился 🙁 Посмотрим что же в нём не так:

Всё ясно! Тест ожидает что приветствователь закончит приветствие восклицательным знаком, а это не происходит. Давайте немедленно исправим класс Greeter:

и перепроверим:

Ура, тест прошёл!

В следующем примере я покажу, как писать тесты для настоящих классов, делающих полезные вещи.

Исходный код примера доступен на github