Как поменять поиск источника данных jndi на базу данных в памяти для тестирования интеграции? - PullRequest
1 голос
/ 22 сентября 2011

Я использую Spring и Hibernate и хочу провести тестирование интеграции с DBUnit. В моем application-context.xml в настоящее время я указываю источник данных через jndi-lookup, который считывает jndi-имя из файла свойств:

<jee:jndi-lookup id="dataSource" 
   jndi-name="${datasource.myapp.jndi}"
   cache="true"
   resource-ref="true"
   proxy-interface="javax.sql.DataSource" />

Я бы хотел обменять это в базу данных в памяти (hsqldb, h2 и т. Д.) Для тестирования интеграции, просто предоставив новый файл свойств, это возможно? Или мне просто использовать другой application-context.xml для интеграционного тестирования?

Ответы [ 4 ]

3 голосов
/ 22 сентября 2011

Вы можете использовать отдельные контексты приложения для prod и test или указать источник данных по умолчанию для источника данных JNDI, который следует использовать в случае сбоя поиска. Тогда не настраивайте источник данных JNDI в своей среде тестирования интеграции. Spring автоматически переключится на источник в памяти, когда поиск не удастся.

2 голосов
/ 25 сентября 2011

Вот почему Spring 3.1 представил профили: http://blog.springsource.com/2011/02/11/spring-framework-3-1-m1-released/

Обновите приложение до 3.1 или используйте различные конфигурации для интеграционных тестов.

0 голосов
/ 22 сентября 2011

Используйте @Bean для определения вашего источника данных.В этом методе вы можете использовать условную логику для определения среды и либо выполнить поиск JNDI, либо подключиться к вашей БД в памяти.

0 голосов
/ 22 сентября 2011

Переместите определение bean-компонента источника данных в отдельный файл конфигурации (infra-config.xml), создайте его другую версию, называемую test -structure-config.xml, в которой вы можете определить источник данных, используя тег jdbc: embedded-database

<jdbc:embedded-database type="hsql">
   <!-- in case you want to populate database, list the sql script files here -->
   <jdbc:script location=".."/>
   <jdbc:script location=".."/>
</jdbc:embedded-database>

После того, как вы это сделаете, вы укажете основной application-context.xml и test -structure-config.xml для внеконтинентального тестирования и с Infrastructure-config.xml для развертывания.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...