gpt4 book ai didi

java - Spring Boot 测试未从 src/main/resources 获取 hbm.xml 文件

转载 作者:太空宇宙 更新时间:2023-11-04 11:36:34 25 4
gpt4 key购买 nike

我们有一个关于 spring-boot 版本 1.5.2.RELEASE 的项目。

我们需要处理 xml 中的 hibernate 命名查询(java 注释中的命名查询不适合我们)。

为此,我们在 src/main/resources 目录中添加了所有 hbm.xml 文件(其中包含这些命名查询)。

当我们的应用程序运行时,这不是问题。命名的查询被正确拾取。

但是,当我们编写集成测试用例时,它无法识别命名查询。

我们得到:

Named Query not found exception

下面是我们的测试用例代码:

@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);
}
}

如果我们复制 src/test/resources 目录 中的 hbm.xml 文件,hbm.xml 文件将被正确拾取并且测试正确运行。

是否可以直接从 src/main/resouces 文件夹中获取 xml 文件,而无需复制这些文件?

最佳答案

我在 Spring Boot 2.1.3 中遇到了与您相同的问题,并通过将 application.properties 文件从 src/test/resources 文件夹移动到 src/main/resources 文件夹并将其重命名为 application-test.properties 来解决

以下是我的情况:

我的 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 中运行测试用例时,总是出现错误:

Named Query not found exception

我通过以下方式解决了这个问题:

  1. 将 src/test/resources/application.properties 文件移至 src/main/resources/application-test.properties
  2. 在 src/main/resources/application.properties 中,定义以下属性:
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文件。这可能与类加载器有关

    关于java - Spring Boot 测试未从 src/main/resources 获取 hbm.xml 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43209443/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com