Как избежать поднятия нескольких ApplicationContext в тестах?
Как избежать поднятия нескольких ApplicationContext в тестах?
В больших Spring-проектах тесты могут запускаться медленно из-за того, что Spring создаёт несколько ApplicationContext.
Почему так происходит? Контекст кэшируется, но Spring создаёт новый, если конфигурация теста отличается: другие @MockBean, @TestConfiguration, профили, свойства через @TestPropertySource и т.д.
Например, два теста с разными @MockBean могут получить два разных контекста.
Как уменьшить количество контекстов:
· Используйте одинаковую конфигурацию тестов.
· Не добавляйте @DirtiesContext без необходимости — он заставляет Spring пересоздать контекст.
· Старайтесь не менять @ActiveProfiles и тестовые properties между классами.
· Общие @MockBean выносите в базовый класс.
· Не создавайте лишние @TestConfiguration.
Главная идея: чем больше тестов используют одинаковую конфигурацию, тем больше Spring переиспользует закэшированный ApplicationContext — и тем быстрее идут тесты.
В больших Spring-проектах тесты могут запускаться медленно из-за того, что Spring создаёт несколько ApplicationContext.
Почему так происходит? Контекст кэшируется, но Spring создаёт новый, если конфигурация теста отличается: другие @MockBean, @TestConfiguration, профили, свойства через @TestPropertySource и т.д.
Например, два теста с разными @MockBean могут получить два разных контекста.
Как уменьшить количество контекстов:
· Используйте одинаковую конфигурацию тестов.
· Не добавляйте @DirtiesContext без необходимости — он заставляет Spring пересоздать контекст.
· Старайтесь не менять @ActiveProfiles и тестовые properties между классами.
· Общие @MockBean выносите в базовый класс.
· Не создавайте лишние @TestConfiguration.
Главная идея: чем больше тестов используют одинаковую конфигурацию, тем больше Spring переиспользует закэшированный ApplicationContext — и тем быстрее идут тесты.
Просмотры: 46