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

StackOverflow https://stackoverflow.com/questions/589563

Вопрос

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

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

Это было полезно?

Решение

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top