springboot使用带有环境变量的application.properties进行测试

时间:2017-06-26 16:19:35

标签: java spring-boot environment-variables

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

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

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

com.microsoft.sqlserver.jdbc.SQLServerException: Login failed for user '${DB1_Username}'.

运行测试时,app.properties文件中是否可以使用环境变量?或者我在做一些愚蠢的事情?

2 个答案:

答案 0 :(得分:0)

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

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

答案 1 :(得分:0)

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配置文件,您可以指定弹簧配置文件来运行测试。指定“ test ”弹簧配置文件来运行所有测试并提供{ {1}}或application-test.properties文件,其中包含必要的测试属性。 阅读更多详细信息:Load different application.yml in SpringBoot Test