Размещение интеграционных тестов Spring в разных классах и пакетах

Я использую AbstractTransactionalSpringContextTests для запуска весенних тестов интеграции. Контекст Spring загружается только один раз, а затем запускаются все тесты. Как мне сделать то же самое, если я хочу, чтобы мои тесты были во многих классах и пакетах.

Конечно, контекст Spring должен быть загружен только один раз для всех моих тестов (во всех классах и пакетах), а не один раз для каждого класса или пакета.


person flybywire    schedule 26.02.2009    source источник


Ответы (1)


Как Javadocs для AbstractSingleSpringContextTests (один из суперклассов AbstractTransactionalSpringContextTests) состояние:

Этот класс будет кэшировать контексты на основе контекстного ключа: обычно конфигурация размещает массив строк, описывающий дескрипторы ресурсов Spring, составляющие контекст. Если метод setDirty() не вызывается тестом, контекст не будет перезагружен даже в разных подклассах этого теста. Это особенно полезно, если ваш контекст создается медленно, например, если вы используете Hibernate и время, необходимое для загрузки сопоставлений, является проблемой.

Ваш контекст кэшируется, поэтому все другие тесты, которые выполняются в одном и том же загрузчике классов (т. е. все ваши другие тесты, которые выполняются во время одного и того же тестового запуска), будут использовать кэшированный контекст. Вам не нужно делать никаких дополнительных настроек — это уже должно быть сделано за вас. Если вы не уверены в этом или хотите устранить неполадки, просто включите ведение журнала для org.springframework, и вы увидите много полезной информации о том, когда загружается контекст, какой файл и как; и т.п.

person matt b    schedule 26.02.2009