dbunit mysql_基于dbunit进行mybatis DAO层Excel单元测试

DAO层测试难点

可重复性,每次运行单元测试,得到的数据是重复的

独立性,测试数据与实际数据相互独立

数据库中脏数据预处理

不能给数据库中数据带来变化

DAO层测试方法

使用内存数据库,如H2。优点:无需清空无关数据;缺点:单元测试中需要进行数据库初始化过程,如果初始化过程复杂,单元测试工作量增大

使用dbunit。优点:数据库初始化简单,大大减轻单元测试工作量;缺点:目前官方提供jar包只支持xml格式文件,需要自己开发Excel格式文件

基于dbunit进行DAO单元测试

应用环境:Spring、Mybatis、MySql、Excel

配置文件

1. pom.xml

引入jar包,unitils整合了dbunit,database,spring,io等模块

org.unitils

unitils-core

3.4.2

org.unitils

unitils-dbunit

3.4.2

org.unitils

unitils-io

3.4.2

org.unitils

unitils-database

3.4.2

org.unitils

unitils-spring

3.4.2

org.dbunit

dbunit

2.5.3

配置maven对resourcew文件过滤规则,如果不过滤maven会对resource文件重编码,导致Excel文件被破坏

src/test/resources

**/*.*

false

2. unitils.properties

在测试源码根目录中创建一个项目级别的unitils.properties配置文件,主要用于配置自定义拓展模块,数据加载等相关信息

#启用unitils所需模块

unitils.modules=database,dbunit

#自定义扩展模块,加载Excel文件,默认拓展模块org.unitils.dbunit.DbUnitModule支持xml

unitils.module.dbunit.className=org.agoura.myunit.module.MyDbUnitModule

#配置数据库连接

database.driverClassName=com.mysql.jdbc.Driver

database.url=jdbc:mysql://127.0.0.1:3306/teams?autoReconnect=true&useUnicode=true&characterEncoding=utf-8

database.userName=root

database.password=agoura

#配置为数据库名称

database.schemaNames=teams

#配置数据库方言

database.dialect=mysql

#需设置false,否则我们的测试函数只有在执行完函数体后,才将数据插入的数据表中

unitils.module.database.runAfter=false

#配置数据库维护策略.请注意下面这段描述

# If set to true, the DBMaintainer will be used to update the unit test database schema. This is done once for each

# test run, when creating the DataSource that provides access to the unit test database.

updateDataBaseSchema.enabled=true

#配置数据库表创建策略,是否自动建表以及建表sql脚本存放目录

dbMaintainer.autoCreateExecutedScriptsTable=true

dbMaintainer.keepRetryingAfterError.enabled=true

dbMaintainer.script.locations=src/main/resources/dbscripts

#dbMaintainer.script.fileExtensions=sql

#数据集加载策略

#CleanInsertLoadStrategy:先删除dateSet中有关表的数据,然后再插入数据

#InsertLoadStrategy:只插入数据

#RefreshLoadStrategy:有同样key的数据更新,没有的插入

#UpdateLoadStrategy:有同样key的数据更新,没有的不做任何操作

DbUnitModule.DataSet.loadStrategy.default=org.unitils.dbunit.datasetloadstrategy.impl.CleanInsertLoadStrategy

#配置数据集工厂,自定义

DbUnitModule.DataSet.factory.default=org.agoura.myunit.utils.MultiSchemaXlsDataSetFactory

DbUnitModule.ExpectedDa

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值