Добавление файла конфигурации Spring в путь к классам через файл манифеста

У меня есть проект WAR, и я пытаюсь сохранить файлы конфигурации spring в папке /WebContent/WEB-INF/Spring/ (как того требует мой работодатель), но когда я это делаю, я не нашел способ ссылаться эти файлы в моих тестах junit. Сегодня мне сказали, что я могу изменить свой файл MANIFEST.MF, чтобы включить файлы конфигурации spring, но мне не удалось успешно сослаться на файлы из файла манифеста.

Мой первый вопрос: можно ли ссылаться на файлы в папке /WebContent/WEB-INF/Spring/ из моих юнитов? Если можно, то как в файле манифеста узнать, где искать файлы? Ссылки относительные?

Структура папок для моего WAR выглядит следующим образом (структура определяется компанией, в которой я работаю):

WARProject
 - src\
 - WebContent\
 - - WEB-INF\
 - - - Spring\
 - - - - App-config.xml
 - - - - Security.xml
 - - META-INF\
 - - - MANIFEST.MF

Я ценю любые рекомендации, которые вы можете предоставить.

Джереми


person jwmajors81    schedule 30.09.2010    source источник
comment
Как вы запускаете свои тесты автоматически с помощью Maven?   -  person sinuhepop    schedule 01.10.2010
comment
В настоящее время мы запускаем тесты вручную, используя JUnit.   -  person jwmajors81    schedule 06.10.2010


Ответы (2)


Если вы используете Spring 2.5 или более позднюю версию и Среда Spring TestContext, вы можете просто аннотировать тестовый класс с помощью @ContextConfiguration(locations = {path/to/file})

Если вы сами загружаете ApplicationContext, просто убедитесь, что /WebContent/WEB-INF/Spring/ находится в пути к классам, и загрузите файл с classpath:contextname.xml.

person matt b    schedule 30.09.2010

В любом случае, независимо от версии Spring, вы можете использовать класс FileSystemXmlApplicationContext для загрузки контекста приложения для тестирования и передать строку "file:WebContent/WEB-INF/Spring/App-config.xml" в качестве аргумента 'configLocation', и это загрузит контекст вашего приложения для вас из конфигурации XML. .

Имея это в виду, у Мэтта есть хорошая идея: если вы можете использовать тестирование на основе аннотаций, вы должны использовать аннотацию @ContextConfiguration в сочетании с аннотацией @RunWith(SpringJUnit4TestRunner.class), чтобы среда тестирования Spring автоматически загружала контекст для вас, и в этом случае вы также можете использовать приведенную выше строку в аннотации @ContextConfiguration. Вам не нужно иметь контекст приложения в вашем пути к классам, и вам не нужно добавлять /WebContent/WEB-INF/Spring/ в ваш путь к классам только для тестирования.

person Alex Marshall    schedule 18.11.2010