Вопрос проверяет понимание роли Testcontainers и различий между инфраструктурой теста и контекстом приложения.
Testcontainers сам по себе не поднимает Spring-контекст. Он только запускает внешние зависимости в Docker-контейнерах. Spring-контекст поднимается тестовым фреймворком, например через @SpringBootTest. Testcontainers лишь предоставляет доступ к реальным сервисам. Это два независимых механизма.
Важно чётко разделять ответственность инструментов.
Testcontainers — это библиотека для запуска временных Docker-контейнеров в тестах.
Testcontainers отвечает только за инфраструктуру.
Запускает контейнеры (БД, Kafka и т.д.)
Управляет их жизненным циклом
Предоставляет адреса и порты
Пример:
static PostgreSQLContainer<?> postgres =
new PostgreSQLContainer<>("postgres:15");
Не поднимает Spring-контекст
Не сканирует бины
Не управляет DI
Обычно:
@SpringBootTest поднимает контекст
Testcontainers запускает БД
Spring подключается к контейнеру
@SpringBootTest
class UserRepositoryTest {
// Spring-контекст + Testcontainers
}
Testcontainers и Spring решают разные задачи. Первый — инфраструктура, второй — контекст и DI.