Что такое JUnit и для чего он используется?

«Что такое JUnit и для чего он используется?» — вопрос из категории Тестирование, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

JUnit — это ведущий фреймворк для модульного тестирования (unit testing) в экосистеме Java. Он предоставляет аннотации и утверждения (assertions) для написания, организации и автоматического запуска тестов.

Основные компоненты:

  • Аннотации для управления жизненным циклом тестов:
    • @Test — помечает метод как тестовый случай.
    • @BeforeEach / @AfterEach — методы выполняются до/после каждого теста (JUnit 5).
    • @BeforeAll / @AfterAll — методы выполняются один раз до/после всех тестов в классе (JUnit 5).
  • Assertions (утверждения) для проверки ожидаемых результатов:

    import static org.junit.jupiter.api.Assertions.*;
    
    @Test
    void testAddition() {
        Calculator calc = new Calculator();
        assertEquals(5, calc.add(2, 3), "2 + 3 должно быть равно 5");
        assertTrue(calc.isPositive(5));
    }

Почему это важно (best practices):

  1. Раннее обнаружение ошибок: Тесты запускаются автоматически, часто в процессе сборки (CI/CD).
  2. Безопасный рефакторинг: Наличие тестового покрытия позволяет изменять код, будучи уверенным, что существующая функциональность не сломана.
  3. Документация: Тесты служат живыми примерами использования кода.
  4. Поддержка современных практик: Параметризованные тесты (@ParameterizedTest), тестирование исключений (assertThrows), расширения (Extension).

JUnit интегрируется со всеми популярными системами сборки (Maven, Gradle) и средами разработки (IntelliJ IDEA, Eclipse).