【发布时间】:2017-01-25 22:09:40
【问题描述】:
我正在尝试找到一种在运行 JUnit 测试时自动检测我的实体的方法。似乎只有当生成的实体类与我的 persistence.xml 位于同一存档中时才有可能。
对于位于 src/test/resources/META-INF 中的 JUnit 测试,我有一个不同的 persistenceTESTE.xml 和 applicationContextTESTE.xml 文件,我在这两个文件中尝试了几种不同的配置,但没有任何效果,我得到一个“java.lang.IllegalArgumentException:未知实体:...“。
src/test/resources/META-INF/applicationContext-TESTE.xml:
<context:component-scan base-package="model.*" />
<bean id="entityManagerFactory" class="org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean">
<property name="persistenceXmlLocation" value="META-INF/persistenceTESTE.xml" />
<!-- As defined in /src/test/resources/META-INF/persistenceTESTE.xml -->
<property name="persistenceUnitName" value="mfspuTESTE" />
<property name="packagesToScan">
<array>
<value>model.finance</value>
</array>
</property>
</bean>
<bean id="transactionManager" class="org.springframework.orm.jpa.JpaTransactionManager">
<property name="entityManagerFactory" ref="entityManagerFactory" />
</bean>
<tx:annotation-driven />
src/test/resources/META-INF/persistenceTESTE.xml:
<persistence-unit name="mfspuTESTE" transaction-type="RESOURCE_LOCAL">
<provider>org.hibernate.jpa.HibernatePersistenceProvider</provider>
<exclude-unlisted-classes>false</exclude-unlisted-classes>
<!-- <class>model.finance.Sale</class> -->
<properties>
<property name="javax.persistence.jdbc.driver" value="org.hsqldb.jdbc.JDBCDriver" />
<property name="javax.persistence.jdbc.url" value="jdbc:hsqldb:hsql://localhost/mfsdbUTeste" />
<property name="javax.persistence.jdbc.user" value="sa" />
<property name="javax.persistence.jdbc.password" value="" />
<property name="hibernate.dialect" value="org.hibernate.dialect.HSQLDialect" />
<property name="connection.pool_size" value="2"/>
<property name="show_sql" value="true"/>
<property name="hibernate.hbm2ddl.auto" value="create-drop" />
</properties>
</persistence-unit>
重要!如果我只是将 persistenceTESTE.xml 的位置从 src/test/resources/META-INF/ 更改为 src/main/resources/META-INF/ 就可以了
最让我感兴趣的是,可以从测试类中看到这些类,但是当我将 persistence.xml 上的位置更改为 test/resources/META-INF 时无法自动检测到实体。
【问题讨论】:
标签: java spring maven unit-testing junit