【发布时间】:2021-04-23 03:13:15
【问题描述】:
关于应用于 Springboot 的 Spring 配置文件(集成)的小问题。
目前,在 src/main/resources 下,我有几个 application.properties 文件。 如:
- 应用程序属性
- application-local.properties
- application-production.properties
- application-integration.properties
并且在src/test/resources下,没有属性文件。
当我运行 maven 时,maven 会触发一些单元和集成测试。单元测试不需要任何特定的配置文件(属性在单元测试中设置,无论如何,这不是问题)。
集成测试,它们需要 application-integration.properties。 目前,使用 src/main/resources 下的文件,一切正常。
我刚刚尝试将文件移动到src/test/resources,集成测试找不到任何属性,好像文件消失了一样。
请告诉 Springboot 使用 src/test/resrouces 下的 application-integration.properties 运行集成测试的正确方法是什么?
谢谢
【问题讨论】:
-
Spring Boot 对 src/test/resources 或 src/main/resources 一无所知。它改为使用类路径加载文件。确保 src/main/resources 或 src/test/resources 中的文件位于类路径中,并且听起来在这种情况下不会发生,这是您的构建系统或 IDE 的工作。造成这种情况的可能原因取决于您使用的构建系统或 IDE 以及您运行测试的方式。
-
明白。我目前正在使用 Maven 作为 Jenkins 工作的一部分,不涉及 IDE。有没有办法简单地告诉“嘿,当你运行集成测试时,看看 /src/test/resources 下的 application-integration.properties”?
-
你的问题不是很清楚。我建议您提供一个代码 sn-p 以使您的问题更准确。无论如何,如果您只想在组件的属性中注入 Value ,那么在此类测试中您不需要 spring 上下文 假设您有一个服务类 @Service public class MyService { @Value("${my.super.property}")字符串属性; public String doSomething () { 返回属性;并且您想编写测试(比如说单元测试)并且您想在属性字段中注入一个值。
-
你可以使用
ReflectionTestUtils -
你好,我相信我的问题已经很清楚了,Sri 已经提供了正确的答案
标签: java spring-boot spring-boot-test application.properties