我们有一个关于spring-boot版本1.5.2.RELEASE的项目。
我们需要在xml中处理hibernate命名查询(java注释中的命名查询不是我们的选项)。
为此,我们在hbm.xml
目录中添加了所有src/main/resources
个文件(包含这些命名查询)。
当我们的应用程序运行时,这不是问题。命名查询被正确拾取。
但是,当我们编写集成测试用例时,它无法识别命名查询。
我们得到:
命名查询未找到异常
以下是我们的测试用例代码:
@RunWith(SpringRunner.class)
@SpringBootTest( webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class MyIntegrationTest {
@Autowired
private TestRestTemplate template;
@Test
public void checkRestService() throws Exception {
ResponseEntity<String> response = template.getForEntity("/hello/1", String.class);
assertTrue(response.getStatusCodeValue() == 200);
}
}
如果我们复制hbm.xml
中的src/test/resources directory
个文件,hbm.xml
文件会被正确选中并且测试运行正确。
是否有直接从src/main/resouces
文件夹中获取xml文件而我们不必复制这些文件?
答案 0 :(得分:0)
我在Spring Boot 2.1.3中遇到了与您相同的问题,并且通过将application.properties文件从src / test / resources文件夹移动到src / main / resources文件夹并将其重命名为application-test.properties < / p>
以下是我的情况:
我的Spring Boot 2.1.3应用程序具有以下文件夹结构:
src/main
+-- java (applcation java files)
+-- resources
+-- hibernate/MyMapping.hbm.xml
+-- hibernate/MyMapping2.hbm.xml
+-- application.properties (define the default / base attributes needed for my application)
+-- application-dev.properties (define the development environment settings)
src/test
+-- java (testing java files)
+-- resources
+-- application.properties (define the testing attributes)
每当我在Eclipse / maven中运行测试用例时,总会出现错误:
找不到命名查询异常
我通过以下方式解决了此问题:
spring.jpa.mapping-resources=hibernate/MyMapping.hbm.xml,hibernate/MyMapping2.hbm.xml
@ActiveProfile("test")
添加到所有测试类,以便首先将其加载到src / main / resources文件夹中的application-test.properties文件此后,我的SpringBoot 2应用程序的测试用例可以在Eclipse和maven命令行中运行而没有任何问题。
我的直觉是Spring Boot / Hibernate使用第一个加载的application.properties的位置作为扫描/定位所有hbm文件的基础。这可能与类加载器
有关