当前位置: 首页 > 知识库问答 >
问题:

在Spring boot中使用辅助h2数据库测试API

韶和璧
2023-03-14

我正在开发一个API来管理我工作的公司中的数据库,问题是当我必须运行不同的测试时,我必须使用“真正的”开发数据库(h2),在那里我有一些真正的数据。

我考虑了一下,我想做的是创建一个新的h2数据库,可以在测试阶段开始,并使用它来测试我所有的控制器方法。

问题是我对如何在Spring Boot中实现这一点毫无头绪。如果你能帮助我,我将非常感激。

    null

谢了!

共有1个答案

薛钧
2023-03-14

让我们假设您有两个环境--“生产”和“测试”。

为每个环境保留一个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

# 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
    null

 类似资料:
  • 我正在用Cucumber编写验收测试,我想使用H2数据库进行测试。 应用程序测试属性如下所示: 在目录resources/db/migration中,我有一个包含这些脚本的sql文件: 但是当我运行测试时,H2用默认格式创建模式,而不是使用脚本: 如您所见,所有VARCHAR都是使用255大小创建的,而不是真实值。 你能帮我把飞行道和H2整合起来吗? 谢谢!

  • 我有一个在mySQL上运行的小型数据库应用程序。 我想使用H2进行测试。 我向build.gradle添加了必要的依赖项: runtimeOnly’com。h2数据库:h2' 然而,我注意到,在完成测试之后,我的mySQL数据库包含测试期间生成的字段,就好像spring没有使用H2一样。 有什么问题吗?

  • 我正在开发一个使用MongoDB数据库的程序,但我在问,当通过Java执行SQL时,是否可以使用内部数据库进行测试,比如H2?

  • 就我所知,我认为这与@id注释的H2解释有关,但不明白为什么,所以任何帮助都将不胜感激... NB-我已经搜索堆栈溢出相当广泛,包括有关使用双引号列规范的问题,但不要认为这与我的情况有关... 表 和从SP调用返回默认结果的测试类: 测试类

  • 由于 Go 标准库的强大支持,Go 可以很容易的进行 Web 开发。为此,Go 标准库专门提供了 httptest 包专门用于进行 http Web 开发测试。 本节我们通过一个社区帖子的增删改查的例子来学习该包。 简单的 Web 应用 我们首先构建一个简单的 Web 应用。 为了简单起见,数据保存在内存,并且没有考虑并发问题。 // 保存 Topic,没有考虑并发问题 var TopicCach