码迷,mamicode.com
首页 > 编程语言 > 详细

Spring Boot整合H2测试DAO

时间:2020-12-16 13:09:02      阅读:8      评论:0      收藏:0      [点我收藏+]

标签:开启   https   适合   选择   oracl   OLE   XML   测试用例   使用   

使用场景

在写DAO层的单元测试时,我们往往会遇到一个问题,测试用例所依赖的数据库数据被修改或删除了,或者在一个新的环境下所依赖的数据库不存在,导致单元测试无法通过,进而构建失败。
在这种情况下,使用H2内存数据库来模拟数据库环境是一个很好的解决方案。

介绍

H2是一个短小精干的嵌入式数据库引擎, 它有如下特点:

  • 纯Java编写,不受平台的限制;
  • 只有一个jar文件,适合作为嵌入式数据库使用;
  • h2提供了一个十分方便的web控制台用于操作和管理数据库内容;
  • 功能完整,支持标准SQL和JDBC。麻雀虽小五脏俱全;
  • 支持内嵌模式、服务器模式和集群;
  • 可以用于单元测试,启动速度快,而且可以关闭持久化功能,每一个用例执行完随即还原到初始状态
  • 可以作为缓存,作为NoSQL的一个补充。当某些场景下数据模型必须为关系型,可以拿它当Memcached使,作为后端MySQL/Oracle的一个缓冲层,缓存一些不经常变化但需要频繁访问的数据,比如字典表、权限表。不过这样系统架构就会比较复杂了;

下载安装

下载地址: http://www.h2database.com/html/download.html

注意:

不要下载Version 1.4.199 (2019-03-13)这个版本, 此版本不支持自动创建数据库; 下载Version 1.4.197 (2018-03-18), Last Stable这个版本

启动h2服务

解压后进入bin目录, 执行java -cp h2*.jar org.h2.tools.Server

$ java -cp h2*.jar org.h2.tools.Server
TCP server running at tcp://192.168.0.102:9092 (only local connections)
PG server running at pg://192.168.0.102:5435 (only local connections)
Web Console server running at http://192.168.0.102:8082 (others can connect)

可以看到tcp连接已开启在9092端口, 这时候就可以在spring boot项目中通过jdbc访问进行crud操作了

java项目中的配置

pom.xml配置如下:

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

单元测试中用到的application.properties的配置如下:

# h2数据库
spring.datasource.driver-class-name=org.h2.Driver
spring.datasource.url=jdbc:h2:tcp://192.168.0.102:9092/~/h2/test
spring.datasource.username=sa
spring.datasource.password=
spring.datasource.schema=classpath:db/schema.sql
spring.datasource.data=classpath:db/data.sql

配置中的解释如下

  • spring.datasource.url=jdbc:h2:tcp://192.168.0.102:9092/~/h2/test

    这行中的~/h2/test表示在你电脑的用户目录下会自动创建一个h2目录, 在h2目录中会创建test.mv.db文件专门用来存放数据库数据。h2也支持纯内存模式, 这样就不会创建任何目录或文件, 但是重启过后的数据就会丢失, 这样不利于crud单测后观察数据, 因此还是使用和其他数据库一样的tcp连接模式

  • spring.datasource.username=sa 和 spring.datasource.password=

    这两行是因为h2的默认用户名为sa, 默认密码为空

  • spring.datasource.schema=classpath:db/schema.sql 和 spring.datasource.data=classpath:db/data.sql

    数据库初始化时创建的数据库、表和数据, 只需第一次跑单测的时候开启这两项, 等表都建好后就可以注释掉这两行, 否则每次run的时候都会用一开始的初始数据, 也就是说你做的对数据的改变操作都不会生效;

配置完成后就可以写dao的单元测试进行操作了

技术图片

IDEA配置连接H2

点击IDEA右侧的Database, 点"+", 选择Data Source, 选择H2,

技术图片

然后就可以像mysql客户端那样使用sql操作数据了

技术图片

Spring Boot整合H2测试DAO

标签:开启   https   适合   选择   oracl   OLE   XML   测试用例   使用   

原文地址:https://blog.51cto.com/4553935/2562797

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!