Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

+661новая вакансия за сутки·58 731вакансия открыта сейчас·Новое:Talanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Новые вакансии в TelegramРаботодателям
Talanto
Вакансии
Компании5 712
РезюмеAIПодготовкаСтатьи
ТарифыТарифы
Войти

Не нашли подходящее?

Пусть нужная вакансия найдёт вас сама.

  1. Подборка в TelegramНовые вакансии по вашему фильтру — сразу в бота.Подключить
  2. Мэтчи по резюмеЗагрузите резюме — покажем, где вы подходите лучше всего.Загрузить
  3. Сохранить фильтрНастройте поиск один раз и возвращайтесь к новым вакансиям.Настроить
Что нового на TalantoTalanto осенью: поиск с цифрами, вакансия по шагам и каталог компаний

Для работодателей

Опубликуйте вакансию — отклики придут в ваш кабинет.

  1. Вакансиябесплатно
  2. Откликиконтакты бесплатно
  3. Наймэтапы и интервью

40 компаний публикуют вакансии напрямую · 4 393 кандидата открыты к предложениям

Разместить вакансию

Популярные направления

Все подборки
  • Python11 079
  • Облачные технологии4 127
  • QA вакансии1 598
  • Android1 395
  • Инженер данных767
  • Продакт-менеджер295

Разработка

  • Backend вакансии1 342
  • iOS1 307
  • AI вакансии660
  • Fullstack вакансии524
  • Frontend вакансии465
  • Mobile вакансии28

По стеку

  • Go6 622
  • Java3 670
  • Kotlin1 199
  • Node.js1 190
  • Rust1 181
  • .NET780
  • PHP329
  • C#211
  • C++206

DevOps и инфраструктура

  • DevOps вакансии3 024
  • Kubernetes2 336
  • Linux-инфраструктура1 899
  • Terraform / IaC1 428
  • CI/CD848
  • Мониторинг и Observability650
  • SRE220
  • Кибербезопасность35

Аналитика и данные

  • Аналитик данных464
  • Data Scientist434
  • Бизнес-аналитик337
  • Системный аналитик48

Другие направления

  • Проджект-менеджер101
  • UI/UX дизайн69
  • Ручное тестирование14

По регионам

  • Вакансии в США23 332
  • Вакансии в Европе9 074
  • Работа в России2 931
  • Вакансии в Канаде2 054

По формату

  • Удалённые вакансии40 752
  • Релокация в США23 332
  • Гибридная работа3 446
  • Офисная работа2 568

По уровню

  • Senior вакансии19 645
  • Middle вакансии11 602
  • Junior вакансии3 620

Сейчас нанимают

Все компании
  • Wise196 вакансий
  • Rakuten188 вакансий
  • ASML163 вакансии
  • Grab134 вакансии
  • Celonis48 вакансий
  • Spotify38 вакансий
  • Adyen28 вакансий
  • Infobip28 вакансий
  • Monzo20 вакансий
  • Darktrace17 вакансий

Вакансии из 344 источников: карьерные страницы компаний и джоб-борды.

КомпанииО насНовостиПубличная офертаУсловия использованияПолитика конфиденциальностиПоддержка
←К теме Spring BootВсе вопросы
Spring BootMiddleТеория

Какова роль @SpringBootTest в интеграционном тестировании?

В закладки
Сначала попробуйте ответить сами30 секунд
Сравнить с ответом ↓

@SpringBootTest поднимает полный Spring ApplicationContext для интеграционных тестов. Поддерживает режимы MOCK (MockMvc), RANDOM_PORT (реальный HTTP) и NONE (только контекст без веб-слоя).

Пример: тест с MockMvc

@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
class UserControllerIntegrationTest {

    @Autowired
    private MockMvc mockMvc;

    @Autowired
    private UserRepository userRepository;

    @BeforeEach
    void setUp() {
        userRepository.deleteAll();
        userRepository.save(new User("Alice", "alice@example.com"));
    }

    @Test
    void shouldReturnUserList() throws Exception {
        mockMvc.perform(get("/api/users")
                .contentType(MediaType.APPLICATION_JSON))
            .andExpect(status().isOk())
            .andExpect(jsonPath("$[0].name").value("Alice"));
    }

    @Test
    void shouldCreateUser() throws Exception {
        String requestBody = """
            {"name": "Bob", "email": "bob@example.com"}
            """;

        mockMvc.perform(post("/api/users")
                .contentType(MediaType.APPLICATION_JSON)
                .content(requestBody))
            .andExpect(status().isCreated())
            .andExpect(jsonPath("$.name").value("Bob"));
    }
}

@SpringBootTest в интеграционном тестировании

@SpringBootTest — аннотация Spring Test, которая поднимает полный (или частичный) контекст Spring ApplicationContext для интеграционных тестов. В отличие от юнит-тестов с @ExtendWith(MockitoExtension.class), здесь участвуют реальная автоконфигурация, бины, база данных и HTTP-слой.

Режимы webEnvironment

  • MOCK (по умолчанию) — создаёт mock-среду веб-контейнера, используется с MockMvc.
  • RANDOM_PORT — запускает реальный встроенный сервер на случайном порту; используется с TestRestTemplate или WebTestClient.
  • DEFINED_PORT — реальный сервер на порту из application.properties.
  • NONE — без веб-среды, только ApplicationContext.

Пример: тест с реальным HTTP (RANDOM_PORT)

@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@ActiveProfiles("test")
class OrderApiIntegrationTest {

    @Autowired
    private TestRestTemplate restTemplate;

    @LocalServerPort
    private int port;

    @Test
    void shouldReturnOrderById() {
        ResponseEntity<OrderDto> response = restTemplate
            .getForEntity("/api/orders/1", OrderDto.class);

        assertThat(response.getStatusCode()).isEqualTo(HttpStatus.OK);
        assertThat(response.getBody()).isNotNull();
    }
}

Изоляция через @Transactional и @Sql

@SpringBootTest
@Transactional // откатывает каждый тест
@Sql("/sql/test-data.sql") // вставляет данные перед тестом
class ProductServiceIntegrationTest {

    @Autowired
    private ProductService productService;

    @Test
    void shouldFindProductByCategory() {
        List<Product> products = productService.findByCategory("electronics");
        assertThat(products).hasSize(3);
    }
}

Мокирование отдельных бинов

@SpringBootTest
class PaymentIntegrationTest {

    @MockBean // заменяет реальный бин в контексте Spring моком Mockito
    private PaymentGateway paymentGateway;

    @Autowired
    private OrderService orderService;

    @Test
    void shouldProcessPayment() {
        when(paymentGateway.charge(any())).thenReturn(PaymentResult.success("txn-123"));

        OrderResult result = orderService.placeOrder(new OrderRequest(...));

        assertThat(result.isPaid()).isTrue();
        verify(paymentGateway).charge(any());
    }
}

Кеширование контекста

Spring Test кеширует ApplicationContext между тестовыми классами с одинаковой конфигурацией. Использование @MockBean или @DirtiesContext создаёт новый контекст, что замедляет тесты. Группируйте тесты с одинаковым набором моков.

Подводные камни

  • @SpringBootTest поднимает весь контекст — тесты становятся медленными. Для тестирования одного слоя используйте слайсы: @WebMvcTest, @DataJpaTest, @JsonTest.
  • @MockBean инвалидирует кеш контекста — каждый класс с уникальным набором @MockBean создаёт новый контекст. Сведите число комбинаций к минимуму.
  • Использование RANDOM_PORT с @Transactional не откатывает транзакции — HTTP-запросы идут через реальный контейнер в другом потоке.
  • Без @ActiveProfiles("test") тест может подключиться к production-базе, если spring.profiles.active не задан явно.
  • Не чистить БД между тестами — состояние из одного теста ломает другой. Используйте @Transactional, @Sql или явный @BeforeEach.
  • @DirtiesContext на каждом тестовом классе сбрасывает кеш и многократно поднимает контекст — тестовый прогон превращается в многоминутный.
  • Забыть добавить spring-boot-starter-test в зависимости — тест не скомпилируется без JUnit 5 и Spring Test.

Частые вопросы на собеседовании

  • Как реализовать health checks в Spring Boot Actuator?
  • Что делает аннотация @SpringBootApplication?
  • Что такое Spring Boot и чем он отличается от Spring Framework?
  • В каких backend-проектах Spring Boot является сильным выбором, а где лучше выбрать более простой или другой стек?

Типичные ошибки

  • Путать термин «springboottest» с соседним механизмом Spring Boot.
  • Не называть границу lifecycle, transaction, thread или request для «springboottest».
  • Игнорировать production-эффекты «springboottest»: latency, SQL shape, memory, security или observability.

Что проверяет интервьюер

  • Попросить объяснить механизм «springboottest» на минимальном примере.
  • Проверить, видит ли кандидат failure mode и диагностику для «springboottest».
  • Уточнить, какие настройки или API меняют «springboottest» в реальном сервисе.

Как вы знаете этот вопрос?

Проверить себя по теме Spring Boot →

Источники

  • https://docs.spring.io/spring-boot/reference/testing/spring-boot-applications.html
←Предыдущий вопросВ чём разница между `@RestController` и `@Controller`?Следующий вопрос→Как обрабатывать исключения глобально в REST API на Spring Boot?

Связанные темы

Spring Bootbackend-designtechnical-communication

Вакансии с этим навыком

  • Backend-разработчик (Java/Kotlin)
  • IT Specialists: Cybersecurity, CPO, Java Backend Developer
  • Senior Software Engineer
  • Senior Java-разработчик
  • Ведущий Java-разработчик МСБ