关于javascript:Spring-Boot整合H2测试DAO

4次阅读

共计 1941 个字符,预计需要花费 5 分钟才能阅读完成。

应用场景

在写 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 操作数据了

正文完
 0