[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"question-spring-test-chto-takoe-springboottest-i-kak-on-rabotaet":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},691,"chto-takoe-springboottest-i-kak-on-rabotaet",16,"spring-test","Spring Test","🧪","Что такое SpringBootTest и как он работает?","`@SpringBootTest` — аннотация, которая создаёт полный контекст Spring-приложения для интеграционного тестирования. Она является заменой устаревших `@SpringApplicationConfiguration` и `@IntegrationTest`.\n\n### Что происходит при использовании SpringBootTest\n\n1. Ищется класс с аннотацией `@SpringBootConfiguration` (обычно главный класс с `@SpringBootApplication`).\n2. Создаётся полный `ApplicationContext` со всеми бинами.\n3. Активируется автоконфигурация Spring Boot.\n4. Регистрируется `TestRestTemplate` и\u002Fили `WebTestClient` (при необходимости).\n\n```java\n@SpringBootTest\nclass UserServiceIntegrationTest {\n\n    @Autowired\n    private UserService userService;\n\n    @Autowired\n    private UserRepository userRepository;\n\n    @Test\n    void shouldCreateUser() {\n        User user = new User(\"Иван\", \"ivan@example.com\");\n        User saved = userService.create(user);\n\n        assertNotNull(saved.getId());\n        assertEquals(\"Иван\", saved.getName());\n    }\n}\n```\n\nМожно указать конкретные конфигурационные классы или переопределить свойства:\n\n```java\n@SpringBootTest(classes = {TestConfig.class, UserService.class})\nclass CustomContextTest { \u002F* ... *\u002F }\n\n@SpringBootTest(properties = {\n    \"spring.datasource.url=jdbc:h2:mem:testdb\",\n    \"app.feature.enabled=true\"\n})\nclass PropertyOverrideTest { \u002F* ... *\u002F }\n```\n\n> **На собеседовании:** важно объяснить, что `@SpringBootTest` поднимает полный контекст и это дорогая операция. Частая ошибка — использовать `@SpringBootTest` для юнит-тестов сервисов, где достаточно `@ExtendWith(MockitoExtension.class)`.","","junior",[7],[],null,{"title":18,"description":19,"ogTitle":18,"ogDescription":20,"keywords":21,"schemaAnswer":22,"featuredSnippetReady":23},"Что такое ParameterizedTest и как он используется? — Gymterview","`@ParameterizedTest` — аннотация JUnit 5, позволяющая запускать один и тот же тест с разными входными данными. Это избавляет от дублирования кода при тестирован","`@ParameterizedTest` — аннотация JUnit 5, позволяющая запускать один и тот же тест с разными входными данными. Это избав",[7,13],"`@ParameterizedTest` — аннотация JUnit 5, позволяющая запускать один и тот же тест с разными входными данными. Это избавляет от дублирования кода при тестировании одной и той же логики с различными параметрами.",true]