2016-05-17 14 views
0

私はhiberante jpaを使用してmysqlデータベースに接続しています。私のpersistence.xmlでhibernateをDBUnitと同じDB接続に設定します

私の永続性ユニットは、次のようになります。

<persistence-unit name="inventoryManager">   

     <!--some settings--> 

     <properties> 
      <property name="javax.persistence.jdbc.driver" value="com.mysql.cj.jdbc.Driver"/> 
      <property name="javax.persistence.jdbc.url" value="jdbc:mysql://localhost:3306/inventory?useSSL=false&amp;useUnicode=true&amp;useJDBCCompliantTimezoneS‌​hift=true&amp;useLegacyDatetimeCode=false&amp;serverTimezone=UTC"/> 
      <property name="javax.persistence.jdbc.user" value="root"/> 
      <property name="javax.persistence.jdbc.password" value="1234"/> 

      <!--Hibernate properties--> 
      <property name="hibernate.dialect" value="org.hibernate.dialect.MySQLDialect"/> 
      <property name="hibernate.show_sql" value="false"/> 
      <property name="hibernate.format_sql" value="false"/> 
      <property name="hibernate.hbm2ddl.auto" value="validate"/> 
     </properties> 
    </persistence-unit> 

マイDAO'sは、データベースとのすべての操作を実行するために、この接続を使用しています。

私もDBUnitをテストに使用していますが、メモリ内データベース(hsql)を使用しています。そして私のテストケースコンストラクタで、その構成は次のようになります。

 System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_DRIVER_CLASS, "org.hsqldb.jdbcDriver"); 
     System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_CONNECTION_URL, "jdbc:hsqldb:mem:db"); 
     System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_USERNAME, "sa"); 
     System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_PASSWORD, ""); 
     System.setProperty(PropertiesBasedJdbcDatabaseTester.DBUNIT_SCHEMA, "db"); 

をだから私は1つのDAOを呼び出してテストを実行するとき。 DAOは、persistence.xmlに指定されているmysql接続を指すentityManagerをインスタンス化します

質問:私のDAO内のentityManagerをインメモリデータベースを指すようにするにはどうすればよいですか?

ありがとうございます!

+0

あなたはSpringを使用していないと仮定しますか? Mavenはどうですか? –

+0

私は春を使用していません.. Maven私は –

+0

src/test/resources/META-INFの下に2番目のpersistence.xmlを関連する値で作成してみてください。テストが実行されているときは、src/testのリソースが優先されます。 –

答えて

0

とtestConfig.xml

4.RunでこれらのBean。これには、src/test/resources/META-INFの下に関連するプロパティを持つ別のpersistence.xmlを作成する必要があります。

このテストを実行する場合、このpersistence.xmlはsrc/main/resourcesのものよりも優先される必要があります。

0

あなたは以下のような何かを行うことができます:

1.CreateデータソースBeanは

<bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <property name="driverClass" value="org.hsqldb.jdbc.JDBCDriver" /> <property name="jdbcUrl" value="jdbc:hsqldb:file:/data/data.db" /> </bean>

以下

2.DefineのようにメモリーDBの何かにこのデータソースを参照するのEntityManagerFactoryを指しています。

3.Add両方あなたはMavenのベースのソリューションを試すことができます春を使用していないとJUnitの

@RunWith(SpringJUnit4ClassRunner.class) 
    @ContextConfiguration(locations ={ "testconfig.xml" }) 
+0

彼はどこで春を使っていると言いますか? –

+0

はい、間違って私はそれを見落とした、彼は春を使用していません。 – shankarsh15

関連する問題