В некоторых случаях 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() { ... }
}
После выявив и исправив все эти случаи, теперь у меня есть только два запущенных контекста приложения (первый — без каких-либо имитируемых компонентов, а второй — с макетными и шпионскими компонентами). Я обнаружил, что существует 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]
Я хотел бы иметь тест утверждения, который проверяет общее количество запущенных контекстов приложения после выполнения всех тестов. Как этого добиться?
Подробнее здесь: https://stackoverflow.com/questions/784 ... n-contexts