2009-11-12 2 views
2

У меня проблема с глупой конфигурацией с Ibatis в моем проекте Spring. Пожалуйста, не подскажите мне, как все это было настроено, я просто следую «политике структуры проекта дома».Ibatis2 и тестовый контекст

Так вот структура, у нас есть «SRC/основные/ресурсы/META-INF/» папка, которая содержит все наши конфигурационные файлы, используемые приложением, а затем есть "ЦСИ/test/resources/META-INF/ ", который содержит только файлы конфигурации, которые имеют разные настройки для запуска модульного тестирования.

Ну в нашем случае это только один файл, то SRC/главный /resources/META-INF/spring/application-config.xml стал SRC/тест/ресурсы/META-INF/spring/test-application-config.xml. Я не собираюсь описывать небольшие различия между ними, потому что эта часть работает нормально.

тест-приложения config.xml импортирует SRC/главный/ресурсы/META-INF/весна /data-access-config.xml файл только штрафом, который в свою очередь Используйте src/main/resources/META-INF/ibatis /sqlmap-config.xml успешно ... После этого, когда он идет в ад.

Смотреть до сих пор мы используем Spring, чтобы найти следующие конфигурационные файлы в пути к классам, но когда мы попали sqlmap-config.xml мы покидаем рамки пружины для рамок Ibatis я считаю, что загружает ресурс файлы, определенные внутри него относительно пути к классам (это взято из документа, что бы это ни значило).

Внутри sqlmap-config.xml определены несколько файлов ресурсов мы используем, которые живут внутри SRC/основные/ресурсы/META-INF/Ibatis/отображение папки. Они ссылаются, как это:

<sqlMapConfig><sqlMap resource="/META-INF/ibatis/mapping/MyObject.xml"/></sqlMapConfig> 

Это прекрасно работает, когда я запустить приложение нормально, но когда я запускаю тестовые случаи JUnit я получаю исключение ввода-вывода о том, что он не может найти файл /м- INF/ibatis/mapping/MyObject.xml.

Я попытался изменить путь в sqlmap-config.xml к «отображение/MyObject.xml», но это не помогло. Я также попытался использовать префикс пути Spring class «classpath: META-INF/ibatis/mapping/MyObject.xml», также не работал.

У любого есть идея, как правильно установить этот Ibatis, чтобы он работал как для приложения, так и для junit?

Спасибо.

ответ

1

Чтобы решить эту проблему, я удалил все файлы Ibatis и папки из/ресурсов/META-INF папкиSRC/теста.

sqlmap-config.xml в SRC/главный/ресурсы/META-INF/Ibatis/Файл отображения Теперь карты, как это:

<sqlMapConfig><sqlMap resource="META-INF/ibatis/mapping/MyObject.xml"/></sqlMapConfig> 

Пожалуйста, обратите внимание, что по сравнению с моей первой пост ведущего «/» ушел ... Я думаю, вот что тут изменило.

Надежды на это помогают любому, кто сталкивается с подобными проблемами.

0

Просто убедитесь, что на самом деле проблема: вы можете захотеть разместить свои сопоставления (MyObject.xml) в той же папке, что и sqlmap-config.xml. Я говорю это, потому что у меня была справедливая доля проблем с пружиной + ibatis + unit. (см. разрешенный question, заданный мной)

Также вы можете получить исключение IO, потому что файл сопоставлений не существует вне контейнера (при запуске тестов).

Вы также должны опубликовать определение для bean-компонента, созданного с SqlMapClientFactoryBean. Это должно иметь configLocation свойства, содержащий путь к sqlMapConfig XML

0

У меня была такая же проблема, и я не мог найти (быстрое) решение, объясняющее, что именно может пойти не так. Отсюда мой ответ.

Как Spring documentation for Ibatis говорит:

Помните, что Ibatis загружает ресурсы из пути класса, поэтому убедитесь, что добавить файл «Account.xml» в путь класса.

В вашем случае, добавив META-INF в свой WebProject путь сборки, т.е. если вы использовали Eclipse, установить <classpathentry kind="src" path="META-INF"/> в ваши проекты .classpath (Это будет видно под Navigator просмотра в Eclipse)