【问题标题】:Spring Boot @ApplicationProperties not using values from test profileSpring Boot @ApplicationProperties 不使用测试配置文件中的值
【发布时间】:2018-10-10 08:02:40
【问题描述】:

我创建了一个用@ApplicationProperties注解的类

@Configuration
@ConfigurationProperties(prefix = "myapp.security")
class SecurityProperties {
    lateinit var signingKey: String
}

并测试是否从配置文件中检索到值

@ExtendWith(SpringExtension::class)
@TestInstance(TestInstance.Lifecycle.PER_CLASS)
@SpringBootTest
@Profile("security-properties-test")
class SecurityPropertiesTest {

    @Autowired
    lateinit var securityProperties: SecurityProperties

    @Test
    fun `security properties are set`(){
        securityProperties.signingKey shouldBe "theSigningKey"
    }
}

当我在默认的 application.yml 中创建一些值时,该值被拾取并且一切正常

spring:
  jpa:
    show-sql: true
myapp:
  security:
    signing-key: theSigningKey

但是当我尝试覆盖配置文件中的值时,仍然使用默认配置文件中的值

spring:
  jpa:
    show-sql: true
myapp:
  security:
    signing-key: theSigningKey

---
spring:
  profiles: security-properties-test
myapp:
  security:
    signing-key: anothertheSigningKey

我在这里错过了什么?

【问题讨论】:

    标签: spring-boot configuration


    【解决方案1】:

    您在测试类上使用了错误的注释。应该用@ActiveProfiles而不是@Profile注解。

    【讨论】:

      猜你喜欢
      • 2019-02-20
      • 2019-01-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-03
      • 2021-02-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多