Да, это вполне возможно.Все, что вам нужно сделать, это использовать один и тот же атрибут locations
в ваших тестовых классах:
@ContextConfiguration(locations = "classpath:test-context.xml")
Spring кэширует контексты приложения с помощью атрибута locations
, поэтому, если тот же locations
появляется во второй разSpring использует тот же контекст, а не создает новый.
Я написал статью об этой функции: Ускорение интеграционных тестов Spring .Также это подробно описано в документации Spring: 9.3.2.1 Управление контекстом и кэширование .
Это имеет интересный смысл.Поскольку Spring не знает, когда будет выполнен JUnit, он кэширует весь контекст forever и закрывает их с помощью ловушки завершения работы JVM.Такое поведение (особенно когда у вас много тестовых классов с разными locations
) может привести к чрезмерному использованию памяти, утечкам памяти и т. Д. Еще одно преимущество контекста кэширования.