[英]Spring Boot profile properties doesn't work with tests
Spring 引導版本 2.2.6。 我的情況是文件夾src/main/resources/
中有幾個application-{profile}.yml
文件,我不想使用 Maven 構建項目,例如mvn clean package -Dspring.profiles.active=dev
然后我在文件夾src/test/resources
中只有application.yml
文件,這應該是所有測試(IT/單元)的屬性文件。
現在,當我使用命令mvn clean package -Dspring.profiles.active=dev
構建時,屬性src/main/resources/application-dev.yml
和src/test/resources/application.yml
被合並並用於測試。 那么在測試屬性中可能會有非常致命的配置,例如 Hibernate auto-ddl: create-drop。
一直在閱讀文檔,但我沒有找到任何邏輯為什么在這種情況下屬性文件被合並。 是否有任何好的做法可以強制測試始終使用某些屬性文件? 我認為僅在測試文件中使用一些注釋並不是最佳實踐,例如@TestPropertySource
或@ActiveProfiles
,因為當您忘記使用這些注釋時,情況再次相同。 所有測試是否有一些全局配置或其他更好的解決方案?
application.yml
文件的優先級高於任何特定於環境的文件,例如application-dev.yml
文件。 標准 inheritance 適用,因此您可以覆蓋特定配置文件 YAML 文件中的父屬性。
application.yml
server:
port: 9090
spring:
jpa:
hibernate:
ddl-auto: create-drop
application-dev.yml
spring:
jpa:
hibernate:
ddl-auto: none
如果您使用dev
配置文件運行,則spring.jpa.hibernate.ddl-auto
參數的值為none
。
我知道 application.yml 在文件夾 /src/main 中具有更高的優先級,但它也從文件夾 /src/test 中接管有點奇怪。
是的,可以將配置制作成特定於配置文件的文件(ddl-auto:無),很難,我仍然對數據源有問題,不知何故 Spring 引導也在選擇 application-dev.ymls 數據源進行測試,這與其他方式不同那個 ddl-auto 屬性。
src/test/resources/application.yml
spring:
datasource:
url: jdbc:h2:mem:test;DB_CLOSE_ON_EXIT=FALSE;MODE=PostgreSQL
src/main/resources/application-dev.yml
spring:
datasource:
url: jdbc:postgresql://localhost:5432/db
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.