[英]Manage H2 and Postgres in same pom.xml in Spring Boot
我正在使用Spring Boot開發一個微服務應用程序。 我的應用程序將用於生產配置Postgres DB和Spring Boot自動測試H2 DB。 因此,我的pom.xml包含兩個依賴項(H2 + Postgres)。 我嘗試將H2依賴關系與tes范圍相關聯,Postgres與運行時關聯如下:
<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.postgresql</groupId>
<artifactId>postgresql</artifactId>
<scope>test</scope>
</dependency>
我可以看到運行mvn測試時 ,Spring Boot默認選擇postgres數據庫,這在我的單元測試環境中不存在。 這就是為什么我更喜歡使用H2來運行單元測試的原因。
有沒有一種正確的方法來告訴spring boot使用H2進行測試而Postgres使用其他方法?
我不知道是否使用不同的application.properties文件(一個在src / main / resources中,另一個在src / test / resources中)可以解決問題。
您應該知道有多個類路徑,例如:
當您使用<scope>runtime</scope>
,依賴項將在運行時類路徑中作為測試類路徑使用 ,如文檔所述 :
此范圍表示編譯不需要依賴項,但是用於執行。 它位於運行時和測試類路徑中,但不是編譯類路徑。
這意味着即使在執行測試時,如果使用<scope>runtime</scope>
,Postgres仍會在您的類路徑上。
通過提供兩個單獨的application.properties
,您提到的解決方案是正確的選擇。
在src/main/resources/application.properties
,您可以像這樣配置數據源:
spring.datasource.url=jdbc:postgresql://localhost:5432/mydatabase
在src/test/resources/application.properties
,您可以像這樣配置數據源:
spring.datasource.url=jdbc:h2:mydatabase
如果需要更細粒度的控件,可以使用Spring配置文件。 例如,您可以使用名為“testdb”的配置文件,然后使用@ActiveProfiles("testdb")
注釋您的測試。
現在,您可以創建一個名為application-testdb.properties
的文件,並添加設置測試數據庫所需的屬性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.