簡體   English   中英

使用輔助 h2 數據庫在 Spring 引導中測試 API

[英]Use a secondary h2 database for testing an API in Spring boot

我正在開發一個 API 來管理我工作的公司的數據庫,問題是當我必須運行不同的測試時,我必須使用“真實”開發數據庫(在 h2 中),其中我有一些真實數據。

我想了想,我想做的是創建一個可以在測試階段開始的新 h2 數據庫,並用它來測試我所有的 Controller 方法。

問題是我不知道如何在 Spring Boot 中實現這一點。 如果你能幫助我,我將不勝感激。

把它們加起來:

  • 我有一個 h2 數據庫
  • 我想使用輔助 h2 進行測試
  • 我怎樣才能做到這一點?

謝謝!

讓我們假設您有 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

第 2 步:構建您的應用程序可啟動 JAR

這里沒有什么可以解釋的。 :)

第 3 步:運行 JAR 時傳遞配置文件名稱

  • 對於測試環境: $ 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM