【问题标题】:springboot tests using application.properties with environment variables使用带有环境变量的 application.properties 进行春季启动测试
【发布时间】:2017-11-29 13:19:38
【问题描述】:

我有使用三个数据源的 spring 应用程序,详细信息存储在我的 application.properties 文件中。 我希望为用户名和密码使用环境变量,见下文:

spring.datasource1.username=${DB1_Username}
spring.datasource1.password=${DB1_Password}

这在我正常启动应用程序时工作正常,但在我运行测试时不行。尝试运行测试时出现以下错误:

com.microsoft.sqlserver.jdbc.SQLServerException:用户“${DB1_Username}”登录失败。

运行测试时,application.properties 文件中可以不使用环境变量吗?还是我在做傻事?

【问题讨论】:

  • 你如何运行你的测试?
  • 我正在使用 gradle build 命令。当我使用 gradle build --debug 时,我看到了上面的错误。
  • 它们可以使用,但可能不会在您启动时设置的 gradle 过程中设置。您还可以通过注释覆盖测试中的特定变量,以免依赖于为测试设置的环境
  • 引导文档中清楚地记录了这个特定的用例

标签: java spring-boot environment-variables


【解决方案1】:

Spring 自动占用属性文件来自

src/test/resources/application.properties

当您运行测试时。如果您使用 @TestPropertySource 注释,例如 @TestPropertySource("classpath:application.properties") 如果您将测试 application.properties 保存在测试资源文件夹中,它应该会被自动拾取。

如果您在解决时遇到问题:

spring.datasource1.username=${DB1_Username}
spring.datasource1.password=${DB1_Password}

尝试提供application.properties 中的值并将其放在目录src/test/resources/ 中。

另一种方法是使用 spring 配置文件,您可以指定 spring 配置文件来运行测试。指定一个 'test' 弹簧配置文件来运行所有测试并提供一个 @ 987654327@ 或 application-test.yml 文件,其中包含必要的测试属性。 阅读更多详情:Load different application.yml in SpringBoot Test

【讨论】:

    【解决方案2】:

    可能是您的 application.properties 文件不在正确的位置。并且您需要将属性文件配置为spring boot配置。对于 application.properties 文件配置,您可以参考以下链接:-

    https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html

    【讨论】:

      猜你喜欢
      • 2016-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 2016-05-08
      • 1970-01-01
      • 2016-12-13
      • 1970-01-01
      相关资源
      最近更新 更多