Юнит-тесты в Java: JUnit для начинающих

Вы поменяли одну строчку — и сломалась функция в другом конце программы. Знакомо? Юнит-тесты ловят такие поломки за секунды. А ещё их наличие в пет-проекте сразу выделяет джуна среди других кандидатов.
Редакция Бинариума
Пишем о профессиях в дизайне, BIM и IT · 6 минут чтения
Из этой статьи вы узнаете:
Зачем нужны тесты
Юнит-тест — небольшая программа, которая автоматически проверяет, что отдельный метод или класс работает правильно.
- Быстро находят ошибки после изменений.
- Документируют, как должен работать код.
- Дают смелость рефакторить.
Первый тест на JUnit 5
Код, который проверяем:
public class Calculator {
public int add(int a, int b) { return a + b; }
}Тест:
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
@Test
void addsTwoNumbers() {
Calculator c = new Calculator(); // подготовка
int result = c.add(2, 3); // действие
assertEquals(5, result); // проверка
}
}Структура «подготовка — действие — проверка» (Arrange-Act-Assert) делает тесты читаемыми.
Курс Бинариума
Java-разработчик с нуля — тесты в финальном проекте
Основные проверки
| Метод | Что проверяет |
|---|---|
| assertEquals | Значения равны |
| assertTrue / assertFalse | Условие истинно или ложно |
| assertNull / assertNotNull | Значение пустое или нет |
| assertThrows | Метод выбрасывает исключение |
@Test
void cannotWithdrawMoreThanBalance() {
Account acc = new Account(100);
assertThrows(IllegalArgumentException.class, () -> acc.withdraw(500));
}Хороший тест
- Проверяет одну вещь и называется так, чтобы было понятно, какую.
- Независим от других тестов и порядка запуска.
- Быстрый — не ходит в сеть и в реальную базу.
- Проверяет граничные случаи: ноль, пустой список, отрицательные числа.
Главное
- Юнит-тесты автоматически проверяют отдельные части кода.
- Тест строится по схеме подготовка — действие — проверка.
- Проверяйте и обычные, и граничные случаи.
- Тесты в пет-проекте — плюс на собеседовании.
Частые вопросы
Сколько тестов нужно писать?
Для учебного проекта — покройте ключевую логику и граничные случаи. Стремиться к 100% покрытия не обязательно.
Что такое моки?
Заглушки, которые подменяют зависимости в тестах — например, базу данных или внешний сервис.
Курс Бинариума
Java-разработчик с нуля
Пишите код, который работает и проверяется автоматически.
- 11 недель обучения
- 10+ практических работ
- Проект с тестами на GitHub