Какие фреймворки и инструменты вы бы использовали для интеграционного тестирования Java-приложения?

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

Ответ

Для интеграционного тестирования в Java-экосистеме применяется комбинация инструментов:

Инструмент Назначение
JUnit 5 / TestNG Базовый движок для написания тестов.
Spring Boot Test (@SpringBootTest) Поднятие тестового контекста Spring.
REST Assured Удобное тестирование REST API.
Testcontainers Запуск реальных зависимостей (БД, Kafka) в Docker-контейнерах.
WireMock Мокирование внешних HTTP-сервисов.
DBUnit / Liquibase Управление тестовыми данными в БД.

Пример интеграционного теста для Spring Boot REST-контроллера:

@SpringBootTest
@AutoConfigureMockMvc
class UserControllerIntegrationTest {
    @Autowired
    private MockMvc mockMvc;

    @Test
    void getUser_ShouldReturnUser_WhenUserExists() throws Exception {
        mockMvc.perform(get("/api/users/{id}", 1L)
                .accept(MediaType.APPLICATION_JSON))
               .andExpect(status().isOk())
               .andExpect(jsonPath("$.id").value(1));
    }
}

Такой стек позволяет тестировать приложение в условиях, близких к production.