Spring Boot @ApplicationProperties不使用测试配置文件中的值

时间:2018-10-10 08:02:40

标签: spring-boot configuration

我创建了一个用@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

我在这里想念什么?

1 个答案:

答案 0 :(得分:0)

您在测试类上使用了错误的注释。应该用@Profile而不是{{1}}来注释。