使用H2数据库进行单元测试
2017-06-03 17:36
585 查看
背景
H2 数据库是一个开源的嵌入型内存数据库,采用纯Java语言实现;程序非常小巧轻便,整个完整的Jar包也只有1.5M左右,很容易集成到项目中。
官网地址
http://www.h2database.com/html/main.html
在数据存储的场景中,为什么会使用内存数据库?常见的出发点可能有:
计算资源限制,如嵌入式计算环境中,由于CPU、内存、Disk等限制,要求采用小巧的数据库存储方案;
项目预研,在项目立项之前可能无法立即采购昂贵的数据库软件,此时往往可以退而选择临时解决方案,利用JDBC协议的通用性在后期完成切换;
自动化测试,在自动化环境中可能需要大量模拟接口,包括数据存储接口,此时内存数据库是不二之选。
单元测试的场景也属于自动化测试,下面主要阐述H2 数据库在项目单元测试中的典型应用。
单元测试的痛点
一个 Junit单元测试的流程包括初始化数据
执行测试
销毁数据
在真实的测试代码开发中,有几类问题会造成困扰:
数据库环境的搭建
搭建一套完整的数据库往往比较耗时,然而一旦将数据库配置加入测试范围,就必须长期维护其稳定性;
这同时也会带来代码库同步的困扰。
保证数据库的"干净"
大多数情况下,每个测试用例在启动前(初始化数据)都期望数据库是"干净"的状态;然而使用真实的数据库却很难保证这点,原因是:
多个应用可能会共享一个物理数据库;
测试用例在销毁数据时很难保证完全清除,可能一次意外的调试也会产生垃圾数据;
H2内存数据库很好的解决了上述问题,本身作为嵌入式数据库并不需要额外的看护成本;在程序退出时,所有数据都能保证完全清除。
如何使用
maven 依赖<dependency> <groupId>org.hsqldb</groupId> <artifactId>hsqldb</artifactId> <version>2.3.4</version> <scope>test</scope> </dependency>
在springboot 使用H2数据库非常方便:
application.properties
# 数据源连接 spring.datasource.url=jdbc:h2:mem:test spring.datasource.driver-class-name=org.hsqldb.jdbcDriver spring.datasource.username=root spring.datasource.password= # DDL脚本 spring.datasource.schema=classpath:script/test-schema.sql # DML脚本 spring.datasource.data=classpath:script/test-data.sql
相关文章推荐
- 使用H2数据库来模拟进行单元测试
- 使用DbUnit进行数据库操作的单元测试
- 使用NUnit对数据库操作进行单元测试
- hibernate入门第五课 通过Hibernate API编写访问数据库代码并使用junit进行单元测试
- java~springboot~h2数据库在单元测试中的使用
- 使用内存数据库H2在spring中进行单元测试
- 初次使用Nunit进行单元测试
- 使用NUnit进行单元测试
- 使用Erwin进行MYSQL的数据库设计
- 使用存储过程进行数据库操作
- 单独使用MFC CRecord类进行数据库操作(原创心得)
- Eclipse学习4-在Eclipse中使用JUnit进行单元测试(下)
- 使用NUnit在.Net编程中进行单元测试(转载)
- 使用SQL-DMO备份数据库并进行校验
- 使用NUnit在.Net编程中进行单元测试
- 使用CppUnit进行单元测试
- Eclipse学习4-在Eclipse中使用JUnit进行单元测试(上)
- [Struts]使用StrutsTestCase对Action进行单元测试简介
- 怎样使用Junit Framework进行单元测试的编写
- VC中使用ADO进行数据库操作