У меня есть несколько тестовых классов, использующих Spring-Batch и Hibernate.Мои тестовые контексты устанавливают h2 в базе данных памяти, инициализируют фабрику сеансов hibernate, которая создает большую часть схемы db, а также выполняет некоторые специфические сценарии SQL для настройки объектов схемы базы данных, необходимых для весеннего пакета (не-orm).Hibernate делает очень хорошую работу, выполняя только то, что необходимо, однако сценарии весенней пакетной инициализации не такие умные.
Моя тестовая конфигурация использует встроенную базу данных h2, поэтому я могу безопасно инициализировать все один раз, однако мне нужно передать ее в spring только для инициализации остальной инфраструктуры интеграции (например, фабрики сеансов hbm и схем Spring-Batch).один раз для всей серии выполняемых тестов.
Все мои модульные тесты выполняются по отдельности, но тесты со 2 по N дают сбой при тестировании всего пакета, поскольку они многократно выполняют инициализацию одной и той же схемы БД и умирают () объект уже существует с ошибками.
Я ищу инициализацию контекста приложения для всей коллекции интеграционных тестов, а затем делегирую конфигурацию деталей для конкретного теста в контекст MyTest, но все еще инициализирую основнойконтекст приложения при запуске одного интеграционного теста.
У меня есть общий набор конфигурационных файлов Spring, которые импортируются в контекст теста для инициализации инфраструктуры, необходимой для тестирования сервисов приложений.Проблема заключается в запуске всех тестов в пакете и т. Д. Система тестирования вызывает одну и ту же инициализацию несколько раз.
Я надеюсь, что это довольно распространенная проблема, и я упустил подробности весной или из документации JUnit.