可重复性,每次运行单元测试,得到的数据是重复的
独立性,测试数据与实际数据相互独立
数据库中脏数据预处理
不能给数据库中数据带来变化
使用内存数据库,如H2。优点:无需清空无关数据,缺点:单元测试中需要进行数据库初始化过程,如果初始化过程复杂,单元测试工作量增大
使用dbunit。优点:数据库初始化简单,大大减轻单元测试工作量;缺点:目前官方提供jar包只支持xml格式文件,需要自己开发Excel格式文件
应用环境:春天,Mybatis, MySql, Excel
<强> 1。pom.xml 强>
引入jar包,至今还整合了dbunit,数据库,春天,io等模块
& lt; dependency> & lt; groupId> org.unitils & lt; artifactId> unitils-core & lt; version> 3.4.2 & lt;/dependency> & lt; dependency> & lt; groupId> org.unitils & lt; artifactId> unitils-dbunit & lt; version> 3.4.2 & lt;/dependency> & lt; dependency> & lt; groupId> org.unitils & lt; artifactId> unitils-io & lt; version> 3.4.2 & lt;/dependency> & lt; dependency> & lt; groupId> org.unitils & lt; artifactId> unitils-database & lt; version> 3.4.2 & lt;/dependency> & lt; dependency> & lt; groupId> org.unitils & lt; artifactId> unitils-spring & lt; version> 3.4.2 & lt;/dependency> & lt; dependency> & lt; groupId> org.dbunit & lt; artifactId> dbunit & lt; version> 2.5.3 & lt;/dependency>
配置maven对resourcew文件过滤规则,如果不过滤maven会对资源文件重编码,导致Excel文件被破坏
& lt; resources> & lt; resource> & lt; directory> src/测试/resources & lt; includes> & lt; include> * */* * & lt;/include> & lt;/includes> & lt; filtering> false & lt;/resource> & lt;/resources>
<强> 2。至今。属性强>
在测试源码根目录中创建一个项目级别的unitils.properties配置文件,主要用于配置自定义拓展模块,数据加载等相关信息
#启用至今所需模块 dbunit unitils.modules=数据库 #自定义扩展模块,加载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/团队# 63;autoReconnect=true&音箱;useUnicode=true&音箱;characterEncoding=utf - 8 database.userName=根 database.password=奥格拉 #配置为数据库名称 database.schemaNames=团队 #配置数据库方言 database.dialect=mysql #需设置假,否则我们的测试函数只有在执行完函数体后,才将数据插入的数据表中 unitils.module.database.runAfter=false #配置数据库维护策略。请注意下面这段描述 #如果设置为true, DBMaintainer将用于更新单元测试数据库模式。这是做> & lt; & # 63; xml version=" 1.0 " encoding=" GBK " & # 63;比; & lt;豆类xmlns: xsi=" http://www.w3.org/2001/XMLSchema-instance " xmlns:上下文=" http://www.springframework.org/schema/context " xmlns=" http://www.springframework.org/schema/beans " xsi: schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd”比; & lt;上下文:component-scan基础包=" com.agoura.agoura "/比; & lt;上下文:property-placeholder位置="类路径:jdbc_dbcp.properties”/比; & lt; !——& lt; util:属性id=" jdbc_dbcp "/祝辞——比; & lt; bean id=笆菰础崩?皁rg.unitils.database.UnitilsDataSourceFactoryBean”/比; & lt; !——春天和MyBatis整合,不需要MyBatis的配置映射文件——比; & lt; bean id=皊qlSessionFactory”类=皁rg.mybatis.spring.SqlSessionFactoryBean”比; & lt;属性名=笆菰础眗ef=笆菰础?比; & lt; !——自动扫描映射。xml文件——比; & lt;属性名=" mapperLocations " value=" https://www.yisu.com/zixun/classpath *:com/agoura/agoura/mapper/xml/* . xml”祝辞& lt;/property> & lt;/bean> & lt; !——刀接口所在包名,春天会自动查找其下的类——比; & lt; bean类=皁rg.mybatis.spring.mapper.MapperScannerConfigurer”比; & lt;属性名=" basePackage " value=" https://www.yisu.com/zixun/com.agoura.agoura.mapper "/比; & lt;属性名=" sqlSessionFactoryBeanName " value=" https://www.yisu.com/zixun/sqlSessionFactory "祝辞& lt;/property> & lt;/bean> & lt; !——(事务管理)事务管理器,使用全球tx JtaTransactionManager——比; & lt; bean id=" transactionManager " 类=皁rg.springframework.jdbc.datasource.DataSourceTransactionManager”比; & lt;属性名=笆菰础眗ef=笆菰础?比; & lt;/bean> & lt;/beans>对dbunit进行mybatis DAO层Excel单元测试(必看篇)