[英]Use a secondary h2 database for testing an API in Spring boot
我正在開發一個 API 來管理我工作的公司的數據庫,問題是當我必須運行不同的測試時,我必須使用“真實”開發數據庫(在 h2 中),其中我有一些真實數據。
我想了想,我想做的是創建一個可以在測試階段開始的新 h2 數據庫,並用它來測試我所有的 Controller 方法。
問題是我不知道如何在 Spring Boot 中實現這一點。 如果你能幫助我,我將不勝感激。
把它們加起來:
謝謝!
讓我們假設您有 2 個環境 - “生產”和“測試”。
為每個環境保留一個application.properties
文件。 每個都將包含自己的數據庫設置。 像這樣:
生產: application-production.properties
#Start: For MySQL 8.0 database.
spring.datasource.url= jdbc:mysql://${DB_IP}:${DB_PORT}/${DB_SCHEMA}
spring.datasource.username=${DB_USER}
spring.datasource.password=${DB_PASSWD}
spring.jpa.properties.hibernate.dialect = org.hibernate.dialect.MySQL8Dialect
#End: For MySQL 8.0 database.
spring.sql.init.platform=mysql
測試: application-testing.properties
# Start: For H2 in-memory database.
spring.datasource.url=jdbc:h2:mem:testdb
spring.datasource.username=sa
spring.datasource.password=secret
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.enabled=true
# End: For H2 in-memory database.
spring.sql.init.platform=h2
這里沒有什么可以解釋的。 :)
$ java -jar -Dspring.profiles.active=testing <spring-boot-application-jar>
$ java -jar -Dspring.profiles.active=production <spring-boot-application-jar>
第一個將使用application-testing.properties
,第二個將使用application-production.properties
。
還有一些其他因素,例如application.properties
中的默認屬性和基於配置文件的屬性中的特定屬性等,您可以在Spring 文檔中閱讀。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.