2011-12-13 8 views
2

私は、Spring(3.1.x)、JSF 2、tomcat 6.xのJPA 2(Hibernate Provider)を使用してWebアプリケーションを開発しています。 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が役に立ちます。 ところで、あなたのニーズに合った1つの興味深いSpringの機能、組み込みデータベースのサポートがあります。だから、私は通常は、メモリ内のH2 DBを作成schema.sqlでスキーマを作成し、テストdata.sqlに一部のデータでそれを埋めるために以下の構成を使用します。

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

次に、あなたがデータソースとしてこのBeanを使用することができますあなたのためにEntityManagerFactory Bean:

<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> 

これはSpringでのテストのためにメモリ内データベースを作成するのに非常に便利で簡潔な方法です。 (クラスパスにH2を追加することを忘れないでください) 詳細については、documentation、「13.8組み込みデータベースのサポート」の章を参照してください。

+0

schema.sqlスクリプトがない場合はどうなりますか? – KhaledE

+0

@KhaledEこれを使わないと、 '' –

関連する問題