我有一个SpringBoot 2.0应用程序,我决定使用orm.xml
混合注释和XML配置。所以,我已将orm.xml
(带有XML配置的JPA文件)放在resources/META-INF
中,并且在启动应用程序时,它已被考虑在内并且一切都很好,它就像魅力。
但是,当运行集成测试(使用内存数据库)时,orm.xml
似乎完全被忽略,因为测试失败,并且出现了与缺少映射相关的异常,映射我已经完成了用orm.xml
(可嵌入的实体)编写。
以下是测试的结果:
package hello;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.boot.test.autoconfigure.jdbc.AutoConfigureTestDatabase;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
@RunWith(SpringRunner.class)
@SpringBootTest
@DataJpaTest
public class ApplicationTests {
@Test
public void contextLoads() {
}
}
我还试过@AutoConfigureTestDatabase
代替@DataJpaTest
,但没有成功。
我应该更改哪些内容,以便集成测试加载orm.xml
?
答案 0 :(得分:0)
我不得不将一些使用内存数据库的集成测试迁移到SpringBoot2,为了能够访问测试中的“ orm.xml”文件,我只是从“ src / main / resources / META- INF / orm.xml”改为“ src / 测试 /resources/META-INF/orm.xml”。
答案 1 :(得分:-1)
我使用spring with junit(不是spring boot),我曾经像这样注释测试类:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations = { "appContextTest.xml" })
在appContextTest.xml中,我有导入:
<import resource="classpath:config-test.xml" />
编辑:文件内容如下(它具有数据源定义和休眠属性:
<bean id="dataSource" class="oracle.jdbc.pool.OracleDataSource">
<property name="URL" value="jdbc:oracle:thin:@127.0.0.1:1521:serv"/>
<property name="user" value="us"/>
<property name="password" value="pass"/>
</bean>
.
.
.
<bean id="sessionFactory"
class="org.springframework.orm.hibernate3.annotation.AnnotationSessionFactoryBean">
<property name="dataSource" ref="dataSource" />
<property name="hibernateProperties">
<props>
<prop key="hibernate.bytecode.use_reflection_optimizer">true</prop>
<prop key="hibernate.dialect">org.hibernate.dialect.Oracle10gDialect</prop>
<prop key="hibernate.show_sql">true</prop>
<prop key="hibernate.format_sql">true</prop>
<prop key="hibernate.query.factory_class">org.hibernate.hql.classic.ClassicQueryTranslatorFactory</prop>
</props>
</property>
` ......我不知道这是否有帮助