使用辅助 h2 数据库在 Spring 引导中测试 API
Use a secondary h2 database for testing an API in Spring boot
我正在开发 API 来管理我工作的公司的数据库,问题是当我必须 运行 不同的测试时,我必须使用“真实”我有一些真实数据的开发数据库(在 h2 中)。
我考虑了一下,我想做的是创建一个可以在测试阶段启动的新 h2 数据库,并用它来测试我所有的控制器方法。
问题是我不知道如何在 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 docs.
上阅读这些因素
我正在开发 API 来管理我工作的公司的数据库,问题是当我必须 运行 不同的测试时,我必须使用“真实”我有一些真实数据的开发数据库(在 h2 中)。
我考虑了一下,我想做的是创建一个可以在测试阶段启动的新 h2 数据库,并用它来测试我所有的控制器方法。
问题是我不知道如何在 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 docs.