项目中首次使用DBUnit拾遗
2021-04-26 01:07
597 查看
文章目录
- [ul]测试准备
- 测试类配置 - BusDeviceTestApp
- 测试类 - DeviceLogServiceTest
- Excel数据准备注意点
- 测试数据准备
- Maven 包导入
- Unitils额外配置(数据库连接)
参考
正文
测试准备
测试数据准备
dev_equipment_info.xlsx - 测试数据
expected_dev_equipment_info.xlsx - 测试后数据
Excel数据准备注意点
- 日期/时间格式 使用 'yyyy-mm-dd hh:mm:ss’格式
- 每个sheet表的首行为数据表字段名称
- sheet名称需要与表名完全相同,也可以使用database.tableName格式的sheet名
- 一个excel数据表可以同时有多个数据表
- Excel最后一行数据之后,不能只是清除内容,导入时无法识别
Maven 包导入
在pom.xml的dependencies中,增加
com.github.yangjianzhouspring-boot-unitils-starter1.3.0.RELEASE
Unitils额外配置(数据库连接)
application-ut.properties 存放于resources下,其内容可参考
database.driverClassName=com.mysql.jdbc.Driver # 此数据库连接信息 database.url=jdbc:mysql://127.0.0.1/septictank_device # 此数据库连接用户名 database.userName=root # 此数据库连接用户密码 database.password=123456 # 此数据库连接的schema database.schemaNames=septictank_device # 此数据库数据库类型:oracle/mysql/postgres等 database.dialect=mysql dataSource.beanName=druidDataSource
测试类配置 - BusDeviceTestApp
package com.citylink.device; import com.unitils.boot.autoconfigure.ConfigurableApplicationContextAware; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.context.annotation.ComponentScan; @SpringBootApplication @ComponentScan(basePackages = {"com.citylink.device"}, basePackageClasses = {ConfigurableApplicationContextAware.class, DataSourcePostProcessorExt.class}) public class BusDeviceTestApp { public static void main(String[] args) { SpringApplication.run(BusDeviceTestApp.class, args); } }
主要实现以下功能:
- basePackages = {“com.citylink.device”},扫描需要注入上下文的业务bean
- ConfigurableApplicationContextAware.class,为测试提供上下文,以便@SpringBean,@SpringBeanByName,@SpringBeanByType等从上下文中注入bean
- DataSourcePostProcessorExt.class,为替换系统中原有的dataSource bean的类,如测试时一直使用系统原数据库,很有可能是相应的dataSource未被正常替换
package com.citylink.device; import org.springframework.beans.BeansException; import org.springframework.beans.factory.config.BeanPostProcessor; import org.springframework.stereotype.Component; import org.unitils.database.UnitilsDataSourceFactoryBean; import javax.sql.DataSource; @Component public class DataSourcePostProcessorExt implements BeanPostProcessor { public DataSourcePostProcessorExt() { } public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException { return bean; } public Object postProcessAfterInitialization(Object bean, String beanName) throws BeansException { if (bean instanceof DataSource) { try { return (new UnitilsDataSourceFactoryBean()).getObject(); } catch (Exception var4) { throw new RuntimeException("replace database throw exception ,can not continue to process", var4); } } else { return bean; } } }
测试类 - DeviceLogServiceTest
package com.citylink.device; import com.citylink.device.pojo.Device; import com.citylink.device.service.IDeviceService; import com.citylink.security.common.msg.ObjectRestResponse; import com.unitils.boot.util.UnitilsBootBlockJUnit4Cla***unner; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.unitils.dbunit.annotation.DataSet; import org.unitils.dbunit.annotation.ExpectedDataSet; import org.unitils.spring.annotation.SpringBeanByType; import java.util.List; @RunWith(UnitilsBootBlockJUnit4Cla***unner.class) @SpringBootTest(classes = BusDeviceTestApp.class) @DataSet("dev_equipment_info.xlsx") public class DeviceLogServiceTest { @SpringBeanByType private IDeviceService deviceService; @Test @ExpectedDataSet("expected_dev_equipment_info.xlsx") public void testSelectAll() { ObjectRestResponse orr = deviceService.selectAll(); Assert.assertTrue(orr.isRel()); ListdeviceList = (List) orr.getData(); System.out.println("deviceList.size()=" + deviceList.size()); } }
相关文章推荐
- github首次使用提交项目
- 首次使用IDEA完成纯mybatis项目过程中遇到的那些坑【填了它】
- 在vue项目创建的后初始化首次使用stylus安装方法分享
- Github首次使用教程(本地新建项目并同步到Github远程仓库)
- 首次在web项目中使用Json报错的问题
- 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取
- 在vue项目创建的后初始化首次使用stylus安装方法
- intellij idea使用git插件如何首次提交项目源码
- 项目管理---git----快速使用git笔记(四)------远程项目代码的首次获取
- 有人在JWebunit集成测试里面使用过dbunit吗???
- 在项目中使用第三方组件/库的补充说明
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- 在小型项目中使用 IBM Rational Unified Process: 极限编程剖析
- 使用 Visual Studio .NET 开发 Web 项目的远程服务器配置
- 如果可以的话,我想大家一起去考试,不过不要耽误项目,现在应该以项目为主,因为项目使用java做的,所以就当是复习了!好不好?
- 在 Eclipse 中使用IDEA的项目工程
- 平时在做ASP.NET项目里经常使用的一些函数和方法
- ASP.NET项目怎样进行管理?(VSS的使用)
- 小型项目中使用 IBM Rational Unified Process: 极限编程剖析
- 几个以前项目中使用的函数 (转)