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

Spring不使用h2数据库进行测试

寿元白
2023-03-14

我有一个在mySQL上运行的小型数据库应用程序。

我想使用H2进行测试。

我向build.gradle添加了必要的依赖项:

runtimeOnly’com。h2数据库:h2'

    plugins {
    id 'org.springframework.boot' version '2.7.0'
    id 'io.spring.dependency-management' version '1.0.11.RELEASE'
    id 'java'
    id 'idea'
}

group = 'com.myprojects'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = '11'

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter:2.7.0'
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'javax.validation:validation-api:2.0.1.Final'
    implementation 'org.springframework.boot:spring-boot-starter-web:2.7.0'
    implementation 'org.jetbrains:annotations:23.0.0'
    implementation 'org.springframework.boot:spring-boot-starter-test:2.7.0'
    implementation 'junit:junit:4.13.2'

    testImplementation 'junit:junit:4.13.2'

    runtimeOnly 'mysql:mysql-connector-java'
    runtimeOnly 'com.h2database:h2'

    compileOnly 'org.projectlombok:lombok'
    annotationProcessor 'org.projectlombok:lombok'
}

jar {
    enabled = false
}

test {
    useJUnitPlatform()
}

然而,我注意到,在完成测试之后,我的mySQL数据库包含测试期间生成的字段,就好像spring没有使用H2一样。

有什么问题吗?

共有2个答案

拓拔俊艾
2023-03-14

如果您想要严格分离的测试环境

注意:此文件中不存在的每个必要入口都将回退到src目录中的属性文件。这可能会导致您的应用程序设置出现一些不一致。

如果要在特定测试中使用特定属性,可以使用@TestProperty tySource注释。

有了这个,您现在可以为大多数测试定义默认属性

古刚洁
2023-03-14

您需要配置application.properties/yaml,如下所示:

spring.datasource.url=jdbc:h2:mem:dbtest
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=user
spring.datasource.password=password
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect

你可以在这里看到更多:https://www.baeldung.com/spring-boot-h2-database

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

  • 问题内容: 使用嵌入式h2数据源以及JUnit(可选),用于集成测试的Spring配置看起来如何? 我第一次尝试使用SingleConnectionDataSource基本上可以成功,但是在更复杂的测试中失败了,在该测试中您需要同时进行多个连接或暂停事务。我认为基于tcp的服务器模式下的 h2 可能也能正常工作,但这可能不是内存中临时嵌入式数据库最快的通信模式。 有哪些可能性及其优势/劣势?另外,

  • 我正在开发一个API来管理我工作的公司中的数据库,问题是当我必须运行不同的测试时,我必须使用“真正的”开发数据库(h2),在那里我有一些真正的数据。 我考虑了一下,我想做的是创建一个新的h2数据库,可以在测试阶段开始,并使用它来测试我所有的控制器方法。 问题是我对如何在Spring Boot中实现这一点毫无头绪。如果你能帮助我,我将非常感激。 null 谢了!

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

  • 示例类: 属性(源): 但是,每当我访问并单击Connect时,就会直接指向一个空白的白色页面。当我使用“测试连接”按钮时,它说“测试成功”。正如本问题中提到的,我尝试了JDBC:h2:mem:testdb和JDBC:h2:~/test来获取JDBC URL。 IDE控制台中不会显示错误。问题可能是什么?谢了。