【问题标题】:Springboot - application-integration.properties working under src/main/resources, but not under src/test/resourcesSpringboot - application-integration.properties 在 src/main/resources 下工作,但不在 src/test/resources 下工作
【发布时间】: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


【解决方案1】:

您可以使用以下配置进行集成测试

@TestPropertySource(locations = "classpath:application-integration.properties")
@ActiveProfiles("integration")

【讨论】:

    猜你喜欢
    • 2014-09-21
    • 2015-03-22
    • 2011-02-24
    • 1970-01-01
    • 2018-01-13
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    • 2014-06-26
    相关资源
    最近更新 更多