Ответ
Выбор зависит от типа приложения (Spring, микросервисы, работа с БД). Вот основные инструменты:
1. Spring Boot Test — стандарт для Spring-приложений.
@SpringBootTest— поднимает полный контекст приложения.@WebMvcTest— для тестирования слоя контроллеров (без полного поднятия контекста).@DataJpaTest— для тестирования JPA-репозиториев.
Пример теста REST-контроллера:
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class UserControllerIT {
@Autowired
private TestRestTemplate restTemplate;
@Test
void getUser_ReturnsUser() {
ResponseEntity<User> response =
restTemplate.getForEntity("/api/users/1", User.class);
assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
assertThat(response.getBody().getName()).isEqualTo("John");
}
}
2. Testcontainers — золотой стандарт для тестов с реальными внешними сервисами (БД, брокеры сообщений).
@Testcontainers
class UserRepositoryIT {
@Container
static PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:15");
// Тесты используют реальную БД в Docker
}
3. REST Assured — DSL для тестирования REST API.
given()
.contentType(ContentType.JSON)
.when()
.get("/users/1")
.then()
.statusCode(200)
.body("name", equalTo("John"));
4. WireMock — для мокирования HTTP-сервисов.
Вывод: Для монолита на Spring — Spring Boot Test + Testcontainers. Для микросервисов — REST Assured/Testcontainers/WireMock.