#spring-boot #spring-boot-test
#весенняя загрузка #spring-boot-test
Вопрос:
При написании весенних тестов с использованием обоих @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
и @SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
я вижу, что тесты повторно используют один и тот же контекст приложения.
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class DemoApplicationTestsDefinedPort {
@Test
void testDefinedPort() {}
}
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.MOCK)
class DemoApplicationTestsMock {
@Test
void mockTest() {}
}
С logging.level.org.springframework.test.context.cache=DEBUG
соответствующим выводом журнала:
...
Storing ApplicationContext [912966811] in cache under key [[WebMergedContextConfiguration@74287ea3 testClass = DemoApplicationTestsDefinedPort, ...]]
...
Retrieved ApplicationContext [912966811] from cache with key [[WebMergedContextConfiguration@4dad8ec0 testClass = DemoApplicationTestsMock, ...]]
...
testDefinedPort
ожидается, что реальный сервер будет запущен на порту, указанном server.port
. Однако, в зависимости от порядка выполнения, testDefinedPort
вместо этого может повторно использоваться контекст приложения, созданный mockTest
. Ожидается ли такое поведение?
Обновление: поднято и идентифицировано как ошибка —https://github.com/spring-projects/spring-boot/issues/23085
Комментарии:
1. Я бы предложил зарегистрировать проблему в трекере проблем Spring Boot. Я понимаю, почему он повторно использует контекст, но я сомневаюсь, что это произойдет.
2. Я только что поднял проблему здесь github.com/spring-projects/spring-boot/issues/23085