Ответ
Я использую JUnit 5 (Jupiter) — это современная, модульная платформа для тестирования на Java.
Ключевые преимущества JUnit 5 перед JUnit 4:
- Поддержка Java 8+: лямбда-выражения,
@ParameterizedTest,@TestFactoryдля динамических тестов. - Модульная архитектура:
junit-jupiter-api(для написания),junit-jupiter-engine(для запуска). - Улучшенные аннотации:
@BeforeEach,@AfterEachвместо@Before,@After. - Расширяемость: модель расширений (
@ExtendWith) вместо правил (@Rule). - Улучшенные утверждения (Assertions): поддерживают лямбды для ленивых сообщений об ошибках.
Пример теста:
import org.junit.jupiter.api.*;
import static org.junit.jupiter.api.Assertions.*;
class CalculatorTest {
@Test
@DisplayName("Сложение двух чисел")
void additionTest() {
assertEquals(4, Calculator.add(2, 2), "2 + 2 должно равняться 4");
}
@ParameterizedTest
@ValueSource(ints = {1, 2, 3})
void isPositive_ParameterizedTest(int number) {
assertTrue(number > 0, () -> number + " должно быть положительным");
}
}
Сопутствующие библиотеки:
- AssertJ — для fluent-assertions, повышающих читаемость.
- Mockito — для мокирования.
- Spring Boot Test — для интеграционного тестирования Spring-приложений.