[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-test-kakie-rezhimy-webenvironment-sushchestvuyut-v-springboottest":3},{"id":4,"slug":5,"topicId":6,"topicSlug":7,"topicName":8,"topicEmoji":9,"question":10,"answer":11,"codeLang":12,"codeSrc":12,"important":12,"commonMistakes":12,"modernUsage":12,"difficulty":13,"tags":14,"related":15,"progress":16,"seo":17},692,"kakie-rezhimy-webenvironment-sushchestvuyut-v-springboottest",16,"spring-test","Spring Test","🧪","Какие режимы webEnvironment существуют в SpringBootTest?","Параметр `webEnvironment` аннотации `@SpringBootTest` определяет, как будет запущено веб-окружение.\n\n| Режим | Описание |\n|---|---|\n| `MOCK` (по умолчанию) | Создаёт mock-веб-окружение. Реальный сервер не запускается. Используется совместно с `MockMvc`. |\n| `RANDOM_PORT` | Запускает реальный веб-сервер на случайном свободном порту. Идеален для интеграционных тестов с `TestRestTemplate`. |\n| `DEFINED_PORT` | Запускает реальный веб-сервер на порту из конфигурации (`server.port`), по умолчанию 8080. |\n| `NONE` | Загружает `ApplicationContext` без какого-либо веб-окружения. Подходит для тестирования сервисов и репозиториев. |\n\n\u003Cdetails>\u003Csummary>Примеры использования\u003C\u002Fsummary>\n\n```java\n\u002F\u002F Мок-окружение (без реального сервера)\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)\n@AutoConfigureMockMvc\nclass MockEnvTest {\n\n    @Autowired\n    private MockMvc mockMvc;\n\n    @Test\n    void testWithMockMvc() throws Exception {\n        mockMvc.perform(get(\"\u002Fapi\u002Fusers\"))\n               .andExpect(status().isOk());\n    }\n}\n\n\u002F\u002F Реальный сервер на случайном порту\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)\nclass RandomPortTest {\n\n    @Autowired\n    private TestRestTemplate restTemplate;\n\n    @LocalServerPort\n    private int port;\n\n    @Test\n    void testWithRealServer() {\n        ResponseEntity\u003CString> response =\n            restTemplate.getForEntity(\"\u002Fapi\u002Fusers\", String.class);\n        assertEquals(HttpStatus.OK, response.getStatusCode());\n    }\n}\n\n\u002F\u002F Без веб-окружения\n@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)\nclass NoWebTest {\n\n    @Autowired\n    private UserService userService;\n\n    @Test\n    void testServiceOnly() {\n        assertNotNull(userService.findAll());\n    }\n}\n```\n\n\u003C\u002Fdetails>\n\n> **На собеседовании:** интервьюер хочет услышать, когда какой режим применять. Частая ошибка — не знать разницу между `MOCK` и `RANDOM_PORT` и всегда использовать `RANDOM_PORT`, замедляя тесты.","","middle",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":19,"keywords":20,"schemaAnswer":19,"featuredSnippetReady":21},"Какие режимы webEnvironment существуют в SpringBootTest? — Gymterview","Параметр `webEnvironment` аннотации `@SpringBootTest` определяет, как будет запущено веб-окружение.",[7,13],true]