Unit Test下使用H2内存数据库

2023-03-07,,

1.Maven引入包

<dependency>
<groupId>com.h2database</groupId>
<artifactId>h2</artifactId>
<scope>runtime</version>
</dependency>

2.在项目的src/main/resources目录下创建一个名为schema.sql的文件,则该文件将会自动被执行。schema.sql文件中定义的所有SQL语句都将被执行,并将在H2数据库中创建对应的表和其他对象。

SET MODE Oracle;

CREATE SCHEMA "CLIENT";
CREATE TABLE "CLIENT"."USER_INFO"
( "ID" NUMBER(10) NOT NULL,
"USER" VARCHAR2(10) NOT NULL,
"ADDRESS" VARCHAR2(100) NOT NULL,
CONSTRAINT "PK_USER_INFO" PRIMARY KEY("ID")
); CREATE SCHEMA "API";
CREATE TABLE "API"."PROCESS"
( "ID" NUMBER(10) NOT NULL,
"PROCESS" VARCHAR2(10) NOT NULL,
CONSTRAINT "PK_PROCESS" PRIMARY KEY("ID"),
CONSTRAINT "FK_PROCESS" FOREIGN KEY("PROCESS")
);

注意:自动执行schema.sql文件的功能是由Spring Boot自动配置提供的。如果使用的是纯粹的Maven项目,而非Spring Boot项目,则需要手动编写代码来读取并执行schema.sql文件中的SQL语句。

3. 如果需要在测试过程中预先插入一些测试数据,也可以在src/main/resources目录下添加一个名为data.sql的文件。

data.sql文件中定义的所有SQL语句也将在测试启动时被自动执行,以插入一些测试数据到H2数据库中。

INSERT INTO CLIENT.USER_INFO VALUES ("1","Eileen","xxxx");
INSERT INTO CLIENT.USER_INFO VALUES ("2","Joey","xxxx"); INSERT INTO API.PROCESS VALUES ("1","haha");

注意:data.sql文件会在schema.sql文件之后被执行,以确保表和其他对象已经被正确地创建。

4. 创建配置文件application.yml 配置数据库连接

spring:
datasource:
url: jdbc:h2:mem:mydb
username: sa
password: passeord
driverClassName: org.h2.Driver
jpa:
database-platform: org.hibernate.dialect.Oracle12cDialect
h2:
console.enabled: true

5. 启动Spring Boot项目,启动成功后,访问http://localhost:8080/h2-console

可以看到内存数据库界面及所建的数据库表

Unit Test下使用H2内存数据库的相关教程结束。

《Unit Test下使用H2内存数据库.doc》

下载本文的Word格式文档,以方便收藏与打印。