Добавление файла конфигурации Spring в classpath через файл манифеста - PullRequest
2 голосов
/ 01 октября 2010

У меня есть проект 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

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

Джереми

Ответы [ 2 ]

1 голос
/ 19 ноября 2010

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

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

1 голос
/ 01 октября 2010

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

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

...