私は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&useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&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をインメモリデータベースを指すようにするにはどうすればよいですか?
ありがとうございます!
あなたはSpringを使用していないと仮定しますか? Mavenはどうですか? –
私は春を使用していません.. Maven私は –
src/test/resources/META-INFの下に2番目のpersistence.xmlを関連する値で作成してみてください。テストが実行されているときは、src/testのリソースが優先されます。 –