繁体   English   中英

如何使用Spring Boot从application.yml读取变量并在Kotlin测试中使用它

[英]How to read variable from application.yml with spring boot and use it in kotlin test

src
  main
    java
       config
          DataSourceProperties.java
    resources
      application.yml
  test
    kotlin
      service
          AuthService.kt
  1. 我有application.yml application.yml文件的图像
  2. 我有java configure类

      @Configuration @ConfigurationProperties(prefix = "datasource") class DataSourceProperties { private String apiUrl; public String getApiUrl() { return apiUrl; } public void setUrl(String apiUrl) { this.apiUrl = apiUrl; } 
  3. 我有科特林服务班

      @RunWith(SpringRunner::class) @SpringBootApplication @Profile("dev") class AuthService { @Value("\\${datasource.apiUrl}") lateinit var apiUrl: String fun registerUser(user: RequestUser): ErrorResponse { return given() .log().all() .body(user) .contentType(ContentType.JSON) .`when`().post("$apiUrl/security") .then().statusCode(StatusCodes.BAD_REQUEST) .extract() .`as`(ErrorResponse::class.java) } } 

当我在测试中执行请求时,我得到

kotlin.UninitializedPropertyAccessException:lateinit属性apiUrl尚未初始化

那就是为什么我有疑问? 如何在测试类中使用yml文件中的属性。 也许我错过了另一个配置,也许我对注解不正确,或者它取决于配置文件,yml和测试文件在结构中的位置。 请给我一个提示。

尝试简单地设置,例如应该提供帮助- @TestPropertySource(properties = ["spring.mail.properties.mail.smtp.auth: false", "spring.mail.properties.mail.smtp.starttls.enable: false"])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM