Тесты Spring Boot - подтверждают максимальное количество запущенных контекстов приложений SpringJAVA

Программисты JAVA общаются здесь
Anonymous
Тесты Spring Boot - подтверждают максимальное количество запущенных контекстов приложений Spring

Сообщение Anonymous »

У меня есть несколько интеграционных тестов с @SpringBootTest.
В некоторых случаях Spring Boot запускает несколько контекстов приложения, выполняя эти интеграционные тесты (например, из-за использования @MockBean и @SpyBean). в конкретном тестовом классе вместо определения их в общем абстрактном классе), и это приводит к увеличению времени сборки или, что еще хуже, может привести к сбою выполнения надежного плагина (как в моем случае). Следующий пример с двумя тестовыми классами запускает два контекста приложения:

Код: Выделить всё

@SpringBootTest
class AbstractIntegrationTest {
..
}

class IntegrationTest1 extends AbstractIntegrationTest {
@MockBean
private Service1 service1;
@Test
void someTest1() { ... }
}

class IntegrationTest2 extends AbstractIntegrationTest {
@MockBean
private Service1 service1;
@Test
void someTest2() { ... }
}
но если мы переместим то же поле с помощью @MockBean в абстрактный класс, будет запущен только один контекст приложения.
После выявив и исправив все эти случаи, теперь у меня есть только два запущенных контекста приложения (первый — без каких-либо имитируемых компонентов, а второй — с макетными и шпионскими компонентами). Я обнаружил, что существует DefaultContextCache, который обрабатывает созданные контексты приложений, но неясно, как этого достичь. Мы могли бы включить ведение журнала по этому классу (

Код: Выделить всё

logging.level.org.springframework.test.context.cache: debug
), и он зарегистрирует следующие сообщения:

Код: Выделить всё

Spring test ApplicationContext cache statistics: [DefaultContextCache@44351c52 size = 8, maxSize = 32, parentContextCount = 0, hitCount = 2156, missCount = 8]
в этом примере size = 8 — отображает количество кэшированных контекстов приложения (в данном случае это общее количество контекстов приложения, и было никаких выселений по достижении максимального размера). Это полезный журнал для описанного сценария, но я хочу иметь тест, который выдает ожидаемое утверждение, чтобы предотвратить появление новых дополнительных контекстов приложения по ошибке в будущем.
Я хотел бы иметь тест утверждения, который проверяет общее количество запущенных контекстов приложения после выполнения всех тестов. Как этого добиться?

Подробнее здесь: https://stackoverflow.com/questions/784 ... n-contexts

Вернуться в «JAVA»