【问题标题】:How to auto detect entities in junit tests "java.lang.IllegalArgumentException: Unknown entity: ..."如何在junit测试中自动检测实体“java.lang.IllegalArgumentException:未知实体:...”
【发布时间】: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


    【解决方案1】:

    如果您在 JAVA SE 环境中,自动检测 jpa 实体不是规范的一部分

    Do I need <class> elements in persistence.xml?

    【讨论】:

      猜你喜欢
      • 2015-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-11
      • 2019-11-16
      • 2011-03-05
      相关资源
      最近更新 更多