首页 > 数据库 >Unit Test下使用H2内存数据库

Unit Test下使用H2内存数据库

时间:2023-03-01 16:33:31浏览次数:40  
标签:H2 数据库 h2 PROCESS USER sql Test Unit schema

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

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

标签:H2,数据库,h2,PROCESS,USER,sql,Test,Unit,schema
From: https://www.cnblogs.com/xin-xing/p/17168760.html

相关文章

  • 【自动化测试】airtest+python移动端测试实践
    Airtest框架基于python的测试框架,核心原理是基于python的内置unittest进行延申开发的测试框架,核心主要包含两个模块:airtest,poco airtest:(1)图像识别(2)封装了ad......
  • AtCoder Beginner Contest 275 A-F 题解
    比赛链接砳赫賏,看懂扣1(A-FindTakahashi模拟。#include<cstdio>#include<algorithm>usingnamespacestd;intn,mx,id=1;intmain(){ intx; scanf("%d......
  • pytest-依赖测试
    背景我们在接口自动化过程中,总会存在依赖性较强的场景,比如批价->下单->支付,具备强依赖关系,这个时候就用到了依赖测试。参考https://blog.csdn.net/dingding_ting/artic......
  • Windows平台Unity Camera场景实现轻量级RTSP服务和RTMP推送
    技术背景随着VR技术在医疗、军事、农业、学校、景区、消防、公共安全、研学机构、展厅展馆,商场等场所普及,开发者对Unity平台下的直播体验提出了更高的要求。技术实现Unity平......
  • unity study 2
    使用unitystore寻找素材,编辑素材,并且用c#为我的人物添加了简单的移动动作,为场景和人物添加刚体,使其具有重力。usingSystem.Collections;usingSystem.Collections.Generi......
  • [AtCoder Grand Contest 060][C. Large Heap]
    看了几篇题解都是从下往上(子树大小从小到大)推的,来整一个从上往下的。题目链接:C-LargeHeap题目大意:称一个大小为\(2^N-1\)的排列是好排列当且仅当其满足对任意\(1\l......
  • airtest IDE初级教程
    一、简介AirtestIDE是一款跨平台的UI自动化测试编辑器,内置了Airtest和Poco的相关插件功能,能够使用它快速简单地编写Airtest和Poco代码。1.Airtest框架:Airtest......
  • pytest框架中,使用到的第三方库
    1. MultipartEncoder:用来搭配Content-Type:multipart/form-data完成文件的上传。用于post请求importrequestsfromrequests_toolbeltimportMulti......
  • unity 阿拉伯数字转中文汉字
    直接调用即可代码如下: usingSystem;usingSystem.Collections;usingSystem.Collections.Generic;usingSystem.Text;usingUnityEngine;publicclassToolS......
  • 软件测试与检验复习5(Integration testing/System Testing)
    UnitTestingvs.IntegrationTesting 单元测试与集成测试Unittesting:TestanIndividualUnitorBasicComponentoftheSystembeforeIntegration.  单元......