Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
1 347 подписчиков · @bookjava
К каналу →
🚑 Global Exception Handling: Красиво падаем Представьте: пользователь запрашивает ID, которого нет. 🔴 Плохой сценарий: Сервер выплевывает стэктрейс на 500 строк, раскрывая внутре…
Читать далее →
2 551
🎛 Конфигурация Spring Boot: YAML, Профили и Секреты Хардкодить настройки (порты, пароли, URL-ы) в Java-коде - это моветон. Если вам нужно поменять порт сервера, вы не должны перек…
Читать далее →
2 530

🧪 Тестирование в Spring Boot: Спите спокойно Глобально тесты делятся на два лагеря: 1.

🧪 Тестирование в Spring Boot: Спите спокойно

Глобально тесты делятся на два лагеря:

1. Unit-тесты (Модульные): Быстрые, изолированные. Проверяем только логику одного класса (обычно Service). Никаких баз данных и поднятия Spring Context.
2. Integration-тесты (Интеграционные): Проверяем, как компоненты работают вместе (Controller + Service + DB). Здесь поднимается Spring Context.

⚡ 1. Unit-тесты: Изоляция и Скорость

Когда вы тестируете UserService, вам не нужно, чтобы он реально лез в базу данных. Вам нужно проверить: "Если репозиторий вернет null, выбросит ли сервис ошибку?"

Для этого мы используем Mockito - библиотеку, которая создает "фейковые" объекты (моки).

Ключевые аннотации:

🔴 @ExtendWith(MockitoExtension.class) - включаем Mockito.
🔴 @Mock - "Создай фейковый объект" (например, UserRepository).
🔴 @InjectMocks - "Создай тестируемый объект (UserService) и вставь в него моки".

💻 Пример Unit-теста:

@ExtendWith(MockitoExtension.class) // 1. Включаем Mockito
class UserServiceTest {

@Mock
private UserRepository userRepository; // Фейк

@InjectMocks
private UserService userService; // Реальный сервис с фейком внутри

@Test
void shouldReturnUser_WhenExists() {
// GIVEN (Дано) - Настраиваем поведение мока
User mockUser = new User("Alex");
// "Если кто-то вызовет findById(1), верни mockUser"
Mockito.when(userRepository.findById(1L)).thenReturn(Optional.of(mockUser));

// WHEN (Когда) - Вызываем метод сервиса
User result = userService.findById(1L);

// THEN (Тогда) - Проверяем результат
Assertions.assertEquals("Alex", result.getName());
// Проверяем, что метод репозитория действительно вызывался 1 раз
Mockito.verify(userRepository, times(1)).findById(1L);
}
}

🐢 2. Integration-тесты: Тяжелая артиллерия

Иногда нужно проверить, правильно ли мапится JSON в контроллере или работает ли SQL-запрос. Тут нам нужен Spring Context.

Ключевые аннотации:

🔴 @SpringBootTest - Поднимает весь контекст приложения (тяжело и медленно, но честно).
🔴 @WebMvcTest - Поднимает только веб-слой (Контроллеры). Сервисы и БД не грузятся.
🔴 @MockBean - Главная магия Spring Test. Это как @Mock, только этот мок кладется прямо в Spring Context, заменяя собой настоящий бин.

💻 Пример теста Контроллера (@WebMvcTest):

@WebMvcTest(UserController.class) // Грузим только контроллер
class UserControllerTest {

@Autowired
private MockMvc mockMvc; // Инструмент для имитации HTTP-запросов

@MockBean // Заменяем настоящий сервис заглушкой в контексте Spring
private UserService userService;

@Test
void shouldReturnStatus200() throws Exception {
Mockito.when(userService.findById(1L)).thenReturn(new User("Alex"));

mockMvc.perform(get("/users/1")) // Делаем GET запрос
.andExpect(status().isOk()) // Ждем 200 OK
.andExpect(jsonPath("$.name").value("Alex")); // Проверяем JSON
}
}

⚔️ @Mock vs @MockBean - Не путать!

Это самый частый вопрос.

1. @Mock (из org.mockito): Используется в Unit-тестах. Быстро. Spring про него ничего не знает.
2. @MockBean (из spring-boot-test): Используется в Integration-тестах. Spring находит этот бин в контексте и подменяет его на мок. Медленнее.

🔥 Итог

🔴 Пишите много Unit-тестов (они быстрые). Используйте Mockito.when(...).
🔴 Пишите немного Integration-тестов (они проверяют связки). Используйте MockMvc.
🔴 Никогда не тестируйте внешней API или боевую БД - мокайте их!

#SpringBoot #Testing #JUnit5 #Mockito #QualityAssurance

👉 @BookJava
📦 От Кода к Продакшену: JAR и Docker В старые времена (Java EE) процесс деплоя был адом: нужно было установить на сервер Tomcat, настроить его, скомпилировать .war файл, закинуть …
Читать далее →
2 535
🧩 Микросервисы: Укрощение хаоса (Spring Cloud) Когда у вас один сервис, всё просто. Но когда их становится 10, 20 или 50, возникают вопросы: 1. Как сервису А узнать IP-адрес серв…
Читать далее →
2 554
Другие главы канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.»
Выберите главу, чтобы продолжить чтение
Все посты →
Глава от 17.06.2026
🔐 Bouncy Castle: Легендарная криптография для Java Если вы разрабатываете на Ja…
👁 145 просмотров
Глава от 15.06.2026
Сегодня я покажу вам простой, но мощный приём, который помогает упростить работу…
👁 329 просмотров
Глава от 11.06.2026
💡Совет: @TransactionalEventListener — это специализированная версия @EventListen…
👁 441 просмотров
Глава от 10.06.2026
💡 Collection vs List в Java: в чём разница и когда что использовать Сегодня раз…
👁 406 просмотров
Глава от 10.06.2026
👩‍💻 Контейнеризация Java-приложений с Docker Приглашаем на открытый урок. 🗓 22…
👁 413 просмотров
Глава от 09.06.2026
🧵 Как правильно логировать ошибки в Java-приложении Привет, друзья! Сегодня я р…
👁 497 просмотров
Глава от 04.06.2026
🔧 Как ускорить сборку Maven проекта в 3 раза Сегодня покажу пару приёмов, котор…
👁 684 просмотров
Глава от 02.06.2026
👩‍💻 ИИ-ассистенты уже умеют писать код, предлагать исправления и ускорять разраб…
👁 658 просмотров
Глава от 02.06.2026
Совет Spring Framework💡 Вы можете инжектировать (autowire) бины, которые могут …
👁 661 просмотров

Популярные посты канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.»

🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 579 просмотров
Совет по Spring Boot💡 Когда вам нужно настроить bean, предоставляемый Spring Boot, проверьте наличие интерфейсов *Customizer - велика вероя…
👁 2 577 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 573 просмотров
От 1 до миллиона пользователей (Масштабирование) Представьте: вы написали крутой стартап. Он крутится на дешевом сервере за $5 в месяц. Баз…
👁 2 570 просмотров
🚀 Подборка полезных IT каналов в Max Системное администрирование, DevOps 📌 https://max.ru/i_odmin Все для системного администратора https…
👁 2 569 просмотров
🚀 CI/CD: Роботы делают рутину за вас Аббревиатура состоит из двух частей, и они решают разные проблемы. 🛠 1. CI (Continuous Integration / …
👁 2 565 просмотров
🧩 Микросервисы: Укрощение хаоса (Spring Cloud) Когда у вас один сервис, всё просто. Но когда их становится 10, 20 или 50, возникают вопросы…
👁 2 554 просмотров
🚑 Global Exception Handling: Красиво падаем Представьте: пользователь запрашивает ID, которого нет. 🔴 Плохой сценарий: Сервер выплевывает …
👁 2 551 просмотров
🏗 Порождающие паттерны: Как рождаются объекты? Создать объект просто: User u = new User(). А если у объекта 20 полей? А если нам нужен толь…
👁 2 543 просмотров
🕸️ Распределенная Трассировка: Ищем "бутылочное горлышко" (Zipkin & Jaeger) Если логи это текст, а метрики это графики, то трассировка это …
👁 2 541 просмотров
🧹 Гигиена кода: Рефакторинг и Технический долг Почему проекты умирают? Не из-за плохой идеи, а из-за того, что стоимость добавления новой ф…
👁 2 535 просмотров
📦 От Кода к Продакшену: JAR и Docker В старые времена (Java EE) процесс деплоя был адом: нужно было установить на сервер Tomcat, настроить …
👁 2 535 просмотров
🏗 Структурные паттерны: Адаптер, Декоратор, Прокси Когда вы пытаетесь соединить старую библиотеку с новым кодом или добавить логирование, н…
👁 2 531 просмотров
🔎 Elasticsearch: Как найти иголку в стоге сена за 10 мс Представьте каталог на 10 миллионов товаров. Пользователь вводит в поиск: "айфон 15…
👁 2 531 просмотров
🎛 Конфигурация Spring Boot: YAML, Профили и Секреты Хардкодить настройки (порты, пароли, URL-ы) в Java-коде - это моветон. Если вам нужно п…
👁 2 530 просмотров
💾 Spring Data JPA: SQL больше не нужен? Spring Data JPA это абстракция над Hibernate (который, в свою очередь, является реализацией JPA). …
👁 2 527 просмотров
🚀 Redis + Spring Cache: Турбо-наддув для бэкенда Самая медленная часть любого приложения это ввод-вывод (I/O). Поход в базу данных (Postgre…
👁 2 527 просмотров
👮‍♂️ Spring Security: Фейсконтроль для вашего API Spring Security - это не просто библиотека, это мощный фреймворк, который встает стеной м…
👁 2 525 просмотров
☸️ Kubernetes: Оркестратор вашего зоопарка Представьте, что у вас 50 микросервисов, каждый запущен в 3 экземплярах (для надежности). Итого …
👁 2 523 просмотров
🗄️ System Design: Как не "положить" Базу Данных? В большинстве веб-приложений (например, Instagram или Twitter) соотношение чтения к записи…
👁 2 522 просмотров

Связанные темы в других каналах

Каналы из той же тематики, где часто появляются близкие сюжеты
Вся тема →
@matematik_andrei_channel
Математик Андрей
Основатель онлайн-школы «Точка Знаний» В канале: — короткие видео по темам 1-11 классов — разбор задач ВПР/ОГЭ/ЕГЭ — применение математики в жизни Получить консульта…
👥 246 896 · +43 960/7д
@obr_mo
Образование Подмосковья
Актуальные новости об образовании в Московской области. Оперативные репортажи о школах, колледжах и вузах Подмосковья, изменениях в учебных программах, олимпиадах, ЕГЭ и…
👥 79 289 · -1 621/7д
@Moscow_school
Московское образование
Успех начинается здесь! Приложение «ЗОЖ с МЭШиком» https://max.ru/meshik_app_bot Для СМИ: press-donm@mos.ru Сайт: mosobr.shkolamoskva.ru ВК: vk.com/educationdep ТГ: htt…
👥 67 397 · -818/7д
@minprosrf
Минпросвещения России
Официальный канал Министерства просвещения России. Всё об образовании для родителей, педагогов и учащихся. Сайт edu.gov.ru ВКонтакте vk.com/minprosvet Однокл
👥 55 093 · +1 779/7д
@Lingvaa
Лингвист | Русский язык Образование
Канал №1 для тех, кто звонИт, а не звОнит! По рекламе: https://clck.ru/3R7DoR Биржа: https://telega.in/c/Lingvaa
👥 53 567 · -114/7д
@id110802233432_biz
Школы РФ
Новости школьного образования для детей и родителей # дети школа школьник новости школьное образование гдз егэ огэ дневник впр оценка учителя родители Реклама: https:…
👥 44 354 · +1 705/7д
🏷 Темы и теги
#SpringBoot #Testing #JUnit5 #Mockito #QualityAssurance #spring boot #java #hibernate #docker #собеседование #микросервисы #Образование
📋 О канале Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.
Всё о Java Core, JVM, Multithreading и ООП. Гайды по Hibernate, Kafka, Docker, Kubernetes (K8s) и Microservices. Разбираем SQL, NoSQL и базы данных. Подготовка к интервью: Паттерны, System Design, LeetCode, Roadmap для Junior, Middle, Senior. Новости экосистемы: Kotlin, Android, Maven, Gradle, Git, CI/CD. Тестирование (JUnit, Mockito) и Best Practices разработки высоконагруженных систем.
🔍 Архив всех постов Макс
Поиск по 8,756,475 постам из 201,186 каналов
Попробовать за 1 ₽ →
Удалить пост или канал с МАКСОТЕКИ
Заявка подтверждается через бота Макс: нужно быть администратором канала и добавить бота МАКСОТЕКИ в администраторы. После проверки канал или конкретный пост скрывается с сайта.
📊 Аналитика канала «Java Разработка | Spring Boot Backend & Architecture. Программирование на Джава для Developer. IT Собеседования, Алгоритмы и Coding задачи. Уроки и курсы для роста в Tech.» ➡️ Перейти в канал Макс
Заявка в МАКСОТЕКА
Добавьте свой канал в каталог
Зарегистрируйтесь в личном кабинете и добавьте канал за пару кликов.
Перейти в личный кабинет →

Бесплатная регистрация, быстрая модерация.