Ответ
Работал с JUnit 5 (Jupiter), актуальной архитектурой для модульного тестирования. Для поддержки legacy-кода знаком и с JUnit 4.
Ключевые отличия JUnit 5 от JUnit 4:
- Архитектура: JUnit 5 состоит из трёх модулей (Jupiter, Vintage, Platform).
- Пакеты: Аннотации и классы в
org.junit.jupiter.api. - Новые аннотации:
@BeforeAll,@AfterAll,@DisplayName. - Улучшенные assertions: Поддержка лямбда-выражений, группировка.
- Параметризованные тесты: Через
@ParameterizedTestс различными источниками данных (@CsvSource,@ValueSource). - Динамические тесты:
@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 из-за его гибкости и активного развития.