Найти в Дзене
Java

💡 Spring Boot лайфхак: ускоряй интеграционные тесты

Если тебе нужно тестировать Spring MVC контроллеры, но не хочется поднимать всё приложение — используй @WebMvcTest. Что это даёт - Загружает только MVC-слой, без всего Application Context - Тесты работают значительно быстрее - Можно замокать сервисы через @MockBean - Идеально для проверки контроллеров, статусов и ответов API Когда использовать - Тестируешь REST-контроллеры - Нужно проверить HTTP-ответы - Не нужна база, security, messaging и другие слои Идея простая: Вместо запуска всего приложения → поднимаем только веб-контекст. Меньше зависимостей → быстрее тесты → стабильный CI. Пример @WebMvcTest(HelloController.class) class HelloControllerTest { @Autowired private MockMvc mockMvc; @MockBean private HelloService helloService; @Test void sayHello_returnsExpectedMessage() throws Exception { given(helloService.getMessage()).willReturn("Hello!"); mockMvc.perform(get("/api/hello")) .andExpect(status().isOk()) .andExpect(content().string("Hello!")); } } Если тестируешь тольк

💡 Spring Boot лайфхак: ускоряй интеграционные тесты

Если тебе нужно тестировать Spring MVC контроллеры, но не хочется поднимать всё приложение — используй @WebMvcTest.

Что это даёт

- Загружает только MVC-слой, без всего Application Context

- Тесты работают значительно быстрее

- Можно замокать сервисы через @MockBean

- Идеально для проверки контроллеров, статусов и ответов API

Когда использовать

- Тестируешь REST-контроллеры

- Нужно проверить HTTP-ответы

- Не нужна база, security, messaging и другие слои

Идея простая:

Вместо запуска всего приложения → поднимаем только веб-контекст.

Меньше зависимостей → быстрее тесты → стабильный CI.

Пример

@WebMvcTest(HelloController.class)

class HelloControllerTest {

@Autowired

private MockMvc mockMvc;

@MockBean

private HelloService helloService;

@Test

void sayHello_returnsExpectedMessage() throws Exception {

given(helloService.getMessage()).willReturn("Hello!");

mockMvc.perform(get("/api/hello"))

.andExpect(status().isOk())

.andExpect(content().string("Hello!"));

}

}

Если тестируешь только контроллер — не поднимай всё приложение.

WebMvcTest экономит секунды на каждом тесте и минуты в CI.