【问题标题】:Enable properties only for testing in Spring仅在 Spring 中为测试启用属性
【发布时间】:2019-11-16 03:00:12
【问题描述】:

我尝试创建一个特殊的 bean,仅用于测试和使用它的特殊属性。

我有application.ymlapplication-test.yml 文件:我只想在第二个文件中保留用于测试的属性。

我创建了一个特殊的测试配置文件,但是由于在application.yml 中找不到相同的属性,所以无法启动 spring boot 上下文。

@TestConfiguration
@EnableConfigurationProperties(
    TestProperties::class
)
class TestPropertiesConfiguration

@ConfigurationProperties("test")
data class TestProperties(
    val property1: String,
    val property2: String
)

应用程序-test.yml:

test:
  property1: value
  property2: value

(spring boot 期望相同的属性也存在于一般的application.yml 文件中)

是否可以有一些特殊的属性专门用于测试?

【问题讨论】:

    标签: spring spring-boot kotlin properties-file spring-boot-test


    【解决方案1】:

    将带有所需测试属性的application.yml 副本放在您的src/test/resources 目录中。

    【讨论】:

    • 那么每当我想为所有活动配置文件更改全局内容时,我都需要更新 application.xml —— 一个测试文件和真实文件?
    • 视情况而定,在某些情况下,您只想在测试环境中进行更改。但如果你需要同时更新它们,你应该这样做。
    【解决方案2】:

    编辑:我现在意识到我误读了您的用例。例如,如果您想将应用程序部署到测试环境并需要为此配置应用程序,我的解决方案就适用。

    您可以通过使用弹簧配置文件来完成此操作。这个博客解释了你需要的一切: https://www.baeldung.com/spring-profiles 如果您的配置文件设置为测试,您的应用程序应自动使用 application-test.yml 和 application.yml。如果在 application.yml 和 application-test.yml 中都定义了一个属性,它应该使用 application-test.yml 中的那个

    【讨论】:

    • 是的,我使用不同的配置文件,正如我在问题中所写的那样。但它不允许 application-test.yml 有自己的属性,在 application.yml 中没有提到
    • 奇怪。如果您的配置文件设置为测试,它应该只是自动选择 application-test.yml。我不确定问题可能是什么。
    • 它从 application-test.yaml 中获取值,但如果属性不存在于 application.yml 中,它就无法构建上下文。但我只在测试阶段需要这些属性。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-10
    • 2021-12-25
    • 2016-01-03
    • 1970-01-01
    • 2019-03-20
    • 1970-01-01
    相关资源
    最近更新 更多