2013-08-12 4 views
1

Это моя установка для интеграции тестирования с пружиной и встроенной H2 базы данныхSpring интеграция испытательна поколение схемы базы данных из другого проекта

<?xml version="1.0" encoding="UTF-8"?> 
<beans xmlns="http://www.springframework.org/schema/beans" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc.xsd"> 

    <jdbc:embedded-database id="dataSource" type="H2" /> 

    <jdbc:initialize-database data-source="dataSource"> 
     <jdbc:script location="classpath:sql/globalParams.sql"/> 
     <jdbc:script location="classpath:sql/customersGroupView.sql"/> 
     <jdbc:script location="classpath:sql/recentIntegrationsTableAndTrigger.sql"/> 
     <jdbc:script location="classpath:sql/insertIntegrationDate.sql"/> 
     <jdbc:script location="classpath:sql/toCharRoutine.sql"/> 
    </jdbc:initialize-database> 
</beans> 

Аннотации родительского интеграционных тестов

@ContextConfiguration(locations = [ 
    "classpath:com/dhl/dcc/dcc-core.xml", 
    "classpath:com/dhl/dcc/test-security.xml", 
    "classpath:com/dhl/dcc/dcc-audit.xml", 
    "classpath:com/dhl/dcc/test-dataSource.xml", 
    "classpath:com/dhl/dcc/test-beans.xml", 
    "classpath:com/dhl/dcc/dcc-forms.xml" 
]) 
public abstract class AbstractIntegrationTestCase extends AbstractTransactionalJUnit4SpringContextTests { 

и в основной части конфигурации * предприятие-менеджер

<property name="generateDdl" value="${dcc.orm.generateDdl:false}"/> 

property dcc.orm.generateDdl установлен в true в свойствах.

Он работал хорошо (схема базы данных была создана из классов, аннотированных @Entity), но теперь я разделил модель домена в свой собственный проект и добавил этот проект как зависимость в Maven. После этого мои интеграционные тесты начинают сбой из-за отсутствия схемы db. Как настроить, где должна выглядеть встроенная база данных для модели домена? Благодарю.

изменения: заводская конфигурация объект

<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean"> 
     <property name="dataSource" ref="dataSource"/> 
     <property name="persistenceUnitName" value="DCC"/> 
     <property name="jpaVendorAdapter"> 
      <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
       <property name="generateDdl" value="${dcc.orm.generateDdl:false}"/> 
       <property name="showSql" value="${dcc.orm.showSql:false}"/> 
       <property name="databasePlatform" value="${dcc.orm.dialect}"/> 
      </bean> 
     </property> 
    </bean> 
+0

Содержит ли баночка этот "путь к классам: SQL/globalParams.sql"? Обычно тестовые ресурсы не упаковываются в банку, а * -test.jar. Поэтому, если файлы sql находятся в тестовом каталоге, упакуйте тестовую банку и добавьте ее в свой целевой проект. – Hippoom

+0

Сценарии не являются проблемой. Они исполняются. Проблема в том, что схема БД во встроенной базе данных не создается из объектов JPA. – DominikM

+0

Извините за непонимание. Не могли бы вы разместить Spring xml, содержащий ваш entityManagerFactory? – Hippoom

ответ

1

Вы пробовали указать файл фляги в persistence.xml? См https://stackoverflow.com/a/1780362/204950

Или попытаться установить исключающие-UNLISTED-классы ложь см https://stackoverflow.com/a/1780437/204950

+0

Seting, исключая незарегистрированные классы в false или true, не имеет никакого результата. Копирование jar в папку dependecy в целевых работает, но это не работает для тестов. Единственное, что помогает, - это перечисление всех классов сущностей при использовании тега в файле persistence.xml, но мне не нравится этот подход. – DominikM

Смежные вопросы