Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про Java: testcontainers, integration testing, docker

Использовал ли ты testcontainers? Для чего они нужны?

Проверяет знание инструмента для интеграционного тестирования с реальными зависимостями (БД, Kafka и др.).

Короткий ответ

Testcontainers — это библиотека для запуска зависимостей (PostgreSQL, Redis и др.) в Docker-контейнерах во время тестов. Позволяет тестировать код в условиях, близких к продакшену.

Длинный ответ

Для чего нужен Testcontainers?

  1. Интеграционные тесты:

    • Запуск реальной БД (PostgreSQL, MySQL) вместо in-memory (H2).

    • Тестирование взаимодействия с Kafka, S3 и другими сервисами.

  2. Автоматизация:

    • Контейнеры стартуют/останавливаются автоматически перед тестами.

Пример для PostgreSQL:

@Testcontainers
public class UserRepositoryTest {
    @Container
    private static final PostgreSQLContainer<?> postgres = new PostgreSQLContainer<>("postgres:13");

    @BeforeAll
    static void setup() {
        // Настройка DataSource с URL контейнера
        String jdbcUrl = postgres.getJdbcUrl();
        // ...
    }

    @Test
    void testSaveUser() {
        User user = new User("Alice");
        repository.save(user); // Работает с реальной PostgreSQL!
        assertNotNull(user.getId());
    }
}

Вывод:
Testcontainers полезен для:

  • Тестов, требующих реальных сервисов.

  • Устранения расхождений между тестовой и продакшен-средой.

Уровень

  • Рейтинг:

    1

  • Сложность:

    6

Навыки

  • Java

    Java

Ключевые слова

#testcontainers

#integration testing

#docker

Подпишись на Java Developer в телеграм