对于我的单元测试,我试图覆盖;属性源[0]";元素,以便在单元测试期间不使用它。
但我的application-test.yaml文件中所做的更改似乎没有用于列表元素,我不知道问题是什么,也不知道正确的方法是什么
对spring.datasource所做的更改已正确应用(内存数据库已启动,日志状态为:以下1配置文件处于活动状态:"测试"(,但构建失败。因为在启动测试时,我的应用程序会尝试连接应用程序中定义的Azure密钥库。yaml:
java.lang.IllegalStateException: Failed to configure KeyVault property source
...
Caused by: java.net.UnknownHostException: my.vault.azure.net
测试类(Kotlin(:
@SpringBootTest
@ExtendWith(MockitoExtension::class)
@ActiveProfiles("test")
internal class BrablTest {...}
application.yaml:
spring:
datasource:
url: jdbc:sqlserver://localhost:1433;databaseName=my_db;applicationName=myApp;disableStatementPooling=false;enablePrepareOnFirstPreparedStatementCall=true;statementPoolingCacheSize=20
username: my_user
password:
driver-class-name: com.microsoft.sqlserver.jdbc.SQLServerXADataSource
cloud:
azure:
keyvault:
secret:
property-sources[0]:
credential:
managed-identity-enabled: true
endpoint: https://my.vault.azure.net/
application-test.yaml:
spring:
datasource:
url: jdbc:h2:mem:testdb
cloud:
azure:
keyvault:
secret:
property-sources[0]:
enabled: false
endpoint: https://local.vault.azure.net/
版本:
- Java 17.0.4
- Spring Boot v2.7.4
- 春季v5.3.23
- Spring Cloud Azure依赖关系4.4.0
如有帮助,不胜感激。
感谢@spencergibb指出这一点。我又读了一遍文档,它写在那里,因为优先级更高,所以只有";application.yaml";被拿走。
合并复杂属性
当在多个配置文件中指定列表时,将使用优先级最高的配置文件(并且仅使用该配置文件(。
外部配置(订单(
配置数据文件按以下顺序考虑:
- 封装在jar中的应用程序属性(Application.properties和YAML变体(
- 封装在jar中的概要文件特定的应用程序属性(application-{Profile}.properties和YAML变体(