С какой версией JUnit вы работали?

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

Ответ

Работал с JUnit 5 (Jupiter), актуальной архитектурой для модульного тестирования. Для поддержки legacy-кода знаком и с JUnit 4.

Ключевые отличия JUnit 5 от JUnit 4:

  1. Архитектура: JUnit 5 состоит из трёх модулей (Jupiter, Vintage, Platform).
  2. Пакеты: Аннотации и классы в org.junit.jupiter.api.
  3. Новые аннотации: @BeforeAll, @AfterAll, @DisplayName.
  4. Улучшенные assertions: Поддержка лямбда-выражений, группировка.
  5. Параметризованные тесты: Через @ParameterizedTest с различными источниками данных (@CsvSource, @ValueSource).
  6. Динамические тесты: @TestFactory для генерации тестов в runtime.

Пример теста на JUnit 5:

import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.DisplayName;
import static org.junit.jupiter.api.Assertions.*;

class CalculatorTest {
    @Test
    @DisplayName("Сложение двух чисел")
    void additionTest() {
        assertEquals(4, Calculator.add(2, 2));
        assertThrows(IllegalArgumentException.class, 
                     () -> Calculator.add(null, 2));
    }
}

Для новых проектов рекомендуется JUnit 5 из-за его гибкости и активного развития.