我正在使用hiberante jpa連接到mysql數據庫。讓休眠指向與DBUnit相同的數據庫連接
我的持久性單元在我的persistence.xml看起來是這樣的:
<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");
所以當我運行一個調用一個DAO的測試時。 DAO實例化一個entityManager,它指向persistence.xml中指定的mysql連接問題是:如何使DAO中的entityManager指向我的內存數據庫?
提前致謝!
我假設你沒有使用Spring?那麼Maven呢? –
我不使用spring .. Maven我是 –
嘗試在src/test/resources/META-INF下用相關值創建第二個persistence.xml。測試運行時,src/test下的資源應該優先。 –