2011-12-13 3 views
2

나는 tomcat 6.x 용 Spring (3.1.x), JSF 2, JPA 2 (Hibernate Provider)를 사용하여 웹 어플리케이션을 개발 중이다. DAO 클래스를 테스트하고 싶습니다. 내 DAO 클래스에서Spring-JPA 테스트하기

:이 작업을 수행합니다

봄 구성에서
@PersistenceContext 
private EntityManager entityManager; 

; persistence.xml을

<persistence-unit name="OpenPU" transaction-type="RESOURCE_LOCAL"> 
    <provider>org.hibernate.ejb.HibernatePersistence</provider> 
    <non-jta-data-source>java:comp/env/jdbc/mysql_open</non-jta-data-source> 
    <properties> 
     <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLInnoDBDialect" /> 
     <property name="hibernate.show_sql" value="true"/> 
     <property name="hibernate.transaction.flush_before_completion" value="true"/> 
     <property name="hibernate.cache.provider_class" value="org.hibernate.cache.HashtableCacheProvider"/> 
     <property name="hibernate.connection.zeroDateTimeBehavior" value="convertToNull"/> 
    </properties> 
</persistence-unit> 

그에게 내가 시험을하고, 내가 테스트 할 때 나도 같은 퍼시스턴스 유닛을 사용하지 않으려는 처음에

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalEntityManagerFactoryBean"> 
    <property name="persistenceUnitName" value="OpenPU" /> 
</bean> 

<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager"> 
    <property name="entityManagerFactory" ref="entityManagerFactory" /> 
</bean> 

. xml 데이터를 사용하는 dbunit에 대해 들었지만 테스트 중에 지속성 단위를 변경하는 방법을 이해하지 못합니다. 자습서 나 도움을 주실 수 있습니까?

감사합니다.

답변

2

아마도 tutorial이 도움이 될 것입니다. BTW, 사용자의 요구에 맞는 흥미로운 Spring 기능 - 내장 데이터베이스 지원 -이 있습니다.

<jdbc:embedded-database id="dataSource" type="H2"> 
    <jdbc:script location="classpath:schema.sql"/> 
    <jdbc:script location="classpath:test-data.sql"/> 
</jdbc:embedded-database> 

는 그런 다음 데이터 소스로이 콩을 사용할 수 있습니다 : 그래서, 난 보통 그냥 메모리 H2의 DB를 생성 schema.sql와 스키마를 생성하고 테스트 data.sql에서 일부 데이터를 채우기 위해 다음과 같은 구조를 사용 당신의 EntityManagerFactory 콩을 위해 :

<bean id="entityManagerFactory" 
    class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean" 
    p:dataSource-ref="dataSource" 
    p:persistence-xml-location="classpath:META-INF/persistence.xml">   
    <property name="jpaVendorAdapter"> 
     <bean class="org.springframework.orm.jpa.vendor.HibernateJpaVendorAdapter"> 
      <property name="databasePlatform" value="org.hibernate.dialect.MySQLInnoDBDialect"/> 
      <property name="showSql" value="true" /> 
      <!-- other properties --> 
     </bean> 
    </property> 
    <property name="persistenceUnitName" value="OpenPU" /> 
</bean> 

이 봄에 시험을위한 인 메모리 데이터베이스를 만들 수있는 매우 편리하고 간결한 방법입니다. (클래스 패스에 H2를 추가하는 것을 잊지 마십시오.) 자세한 내용은 documentation, "13.8 임베디드 데이터베이스 지원"장을 참조하십시오.

+0

schema.sql 스크립트가없는 경우는 어떻게됩니까? – KhaledE

+0

@KhaledE는 그것을 사용하지 않고 그냥 사용합니다. ' –