Проверяет знание инструмента для интеграционного тестирования с реальными зависимостями (БД, Kafka и др.).
Testcontainers — это библиотека для запуска зависимостей (PostgreSQL, Redis и др.) в Docker-контейнерах во время тестов. Позволяет тестировать код в условиях, близких к продакшену.
Интеграционные тесты:
Запуск реальной БД (PostgreSQL, MySQL) вместо in-memory (H2).
Тестирование взаимодействия с Kafka, S3 и другими сервисами.
Автоматизация:
Контейнеры стартуют/останавливаются автоматически перед тестами.
@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 полезен для:
Тестов, требующих реальных сервисов.
Устранения расхождений между тестовой и продакшен-средой.