Как стать автором
Обновить

Комментарии 4

У нас используется полный контекст в тестах и, чтоб ускорить его поднятие при запуске не всех тестов, а только части, мы используем ленивую инициализацию всех бинов по умолчанию. Однако некоторые бины при таком подходе нужно разметить обязательными к инициализации через @Lazy(false)

А ещё для фича флагов и профилей можно использовать иерархию контекстов, тогда базовый контекст уже закеширован и надо построить только "диф"

а можете привести пример?

@ContextHierarchy(
        @ContextConfiguration(
                name = "coreContext",
                classes = {
                        // configs:
                }
        ))
class BaseTest {}

@ContextHierarchy(
        @ContextConfiguration(
                name = "serviceContext",
                classes = {
                        // configs:
                }
        )
)
class BaseServiceTest extends BaseTest {}

@ContextHierarchy({
        @ContextConfiguration(
                name = "extendedServiceContext",
                classes = {
                        // configs:
                }
        )
})
@ActiveProfiles({"enableSthProfile"})
@TestPropertySource(properties = {
        "context.specific.property=true"
})
class BaseExtendedTest extends BaseServiceTest {}

но надо учитывать, что если какой то бин создался в рамках serviceContext, проперти context.specific.property=true и профиль enableSthProfile на него уже не повлияют, есть возможность пересоздать этот слой указав его с тем же именем, тогда спринг как бы "смержит" деклорации и пересоздаст слой

Зарегистрируйтесь на Хабре, чтобы оставить комментарий