我有使用三个数据源的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文件中是否可以使用环境变量?或者我在做一些愚蠢的事情?
答案 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