首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

DAO测试难点 可重复性,每次运行单元测试,得到的数据是重复的 独立性,测试数据与实际数据相互独立 数据库中脏数据预处理 不能给数据库中数据带来变化 DAO测试方法 使用内存数据库,如H2。...优点:无需清空无关数据;缺点:单元测试中需要进行数据库初始化过程,如果初始化过程复杂,单元测试工作量增大 使用dbunit。...优点:数据库初始化简单,大大减轻单元测试工作量;缺点:目前官方提供jar包只支持xml格式文件,需要自己开发Excel格式文件 基于dbunit进行DAO单元测试 应用环境:Spring、Mybatis...-- DAO接口所在包名,Spring会自动查找其下的 --> ...测试示例 被测试DAO层代码: public interface MembersMapper { int deleteByPrimaryKey(Integer id); int insert

1.9K00

mybatis使用 原始dao开发 (自己写dao实现

-- 根据用户名称模糊查询用户,可能返回多条记录, resultType :指定的就是单条记录所映射的java对象类型 %{}表示拼接sql串,将接受的参数容不加修饰的拼接在sql中...问题:使用${}拼接sql,引起sql注入 不安全 ${value} :接受参数的容,如果传入的参数是简单类型,${}中只能使用value --> <select id="findUserByName...username},birthday=#{birthday},sex=#{sex},address=#{address} where id=#{id} 第一个<em>dao</em>...实现<em>类</em> 的查询用户的方法 @Test public void findByIdTest() throws IOException { //获取mybatis配置文件 String resource...System.out.println("用户名是 : "+user.getUsername()); System.out.println(user); //释放资源 sqlSession.close(); } 原始dao

55610
您找到你想要的搜索结果了吗?
是的
没有找到

告别祈祷式编程|单元测试在项目里的正确落地姿势

「好处:」 可以使用单元测试来完成模块功能的一个测试 使用单元测试可以更好的完成模块的回归测试 「在开发中一般要进行如下测试:」 单元测试:一般情况下就是完成我们模块功能的一个检测 回归测试:当我们开发好一个功能之后...Stub的思想就是:自己编写DAO的实现使用Map集合来模拟数据库的数据以及访问的这个过程,就叫做Stub 「具体使用:」 首先声明DAO的接口 public interface IUserDAO {...的使用 「主要用途:」 dbunit是专门用来测试DAO层的,以后开发中DAO测试就可以使用dbunit来进行 「使用流程:」 备份所有的表 private void backAllTable(...「使用场景:」 dbunit是专门用来测试DAO层的 EasyMock是专门用来测试Service层的 DAO层的测试的重点:数据的准确性 Service层测试的重点是DAO的调用次数、DAO层的调用的顺序...「简介:」 整合了Junit4框架,来做单元测试 「具体使用:」 编写基 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(

1.3K10

告别祈祷式编程|单元测试在项目里的正确落地姿势

「好处:」 可以使用单元测试来完成模块功能的一个测试 使用单元测试可以更好的完成模块的回归测试 「在开发中一般要进行如下测试:」 单元测试:一般情况下就是完成我们模块功能的一个检测 回归测试:当我们开发好一个功能之后...Stub的思想就是:自己编写DAO的实现使用Map集合来模拟数据库的数据以及访问的这个过程,就叫做Stub 「具体使用:」 首先声明DAO的接口 public interface IUserDAO {...的使用 「主要用途:」 dbunit是专门用来测试DAO层的,以后开发中DAO测试就可以使用dbunit来进行 「使用流程:」 备份所有的表 private void backAllTable(...「使用场景:」 dbunit是专门用来测试DAO层的 EasyMock是专门用来测试Service层的 DAO层的测试的重点:数据的准确性 Service层测试的重点是DAO的调用次数、DAO层的调用的顺序...「简介:」 整合了Junit4框架,来做单元测试 「具体使用:」 编写基 @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(

1.2K30

有赞单元测试实践

以有赞中台某应用为例,应用部署是微服务架构,对外提供dubbo服务,当前的单元测试,采用了分层测试框架,根据代码的分层,分为 Service 层测试,Biz 层测试,外部服务访问层测试DAO 测试,Redis...单元测试的编写,主要包含以下几个阶段: 数据准备:在编写测试用例前,需要依赖到一些数据,数据来源一般是数据库,而构造数据,又不能依赖 DAO 层的代码,需要使用原生jdbc 去插入数据,测试代码编写效率低...spring 配置文件路径, SpringockitoContextLoader指定了加载配置的,这两个一起用可以支持在使用 spring xml 配置的同时可以将 mockito 生成的 mock...有赞单元测试框架,数据库层使用 h2 数据库代替测试库,隔离单元测试数据与测试库数据,在单元测试结束后自动清理数据,避免污染测试库数据及被测试库数据影响,基于 DbUnit 可以通过 xml 构造 DB...4.1 数据准备 单测依赖的 Db 数据,通过添加测试方法监听器,在 Junit 执行前通过 DbUnit 工具,加载初始化文件,写入 H2 数据库;单测的入参,通过 param.json 文件,以

3.3K30

DBUnit数据库测试

DBUnit数据库测试DBUnit是一个基于junit扩展的数据库测试框架。它提供了大量的对与数据库相关的操作进行了抽象和封装。...虽然这种情况可以将表格创建一个副本出来,然后对表格副本进行测试,这样就避免了会破坏表格里的数据,但是这种方法比较麻烦,而且有些情况就是想直接对表格进行测试而不想对副本进行测试,那么就需要使用DBUnit...先介绍一下DatabaseOperation,该类是一个抽象代表了对数据库的操作,例如CUD以及其组合等, 它采用了退化的工厂模式,可直接通过它获取其具体的子类,使用这个可以在测试完后还原数据库的表格数据...使用DBUnit工具进行测试: 前4步和上面的一样,不同的就在于第5步测试的编写: ? ? ? ? ? 测试结果: ? ? xml文件内容,这个文件就是以xml格式来存储数据库表格的数据: ?...使用DBUnit工具测试完后,数据库表格里的数据就不会出现测试数据残留或者数据损坏了: ?

95720

数据库测试的新选择Database-Rider

想看笔者唠嗑的可以顺序往下看,了解DBUnit以及Utilities-DBUnit、Spring-test-dbunit等轮子。 1-DBUNIT 数据库测试工具事实上的标准就是DBUnit。...随着Spring框架逐步成为MVC开发模式的事实上的标准,统治JAVA WEB的项目,基于注解的开发方式流行了开来。...image.png 问题-2:只能在Spring技术栈下使用 想要用注解,得先把Spring带上。不像DBUnit那样可以独立使用。...问题-3:只能在Spring技术栈下使用数据结构单一,只支持了xml格式,其余格式需要自行开发 @DatabaseSetup("sampleData.xml") 问题4:只能在Spring技术栈下使用使用的是较老的...劣势- 又一个轮子,期待合体 本质上这还是基于DBUnit的一个新轮子,包含了DBUnit使用中会遇到的所有的坑(这个足够写比本文长3倍的文章来吐槽)。其实造一个新轮子,不如把旧轮子焕新。

1.2K40

15.junit测试使用及注解

2.3然后在src里创建我们要测试的mathDemo: ? 2.4输入mathDemo名,点击finish: ?...mathDemo的add和multiply方法 2.6 然后我们创建一个junit测试 ?...而@Test表示该方法为测试方法,除了@Test外还有: @BeforeClass : 该方法表示启动测试对象测试之前启动的方法, 所以该方法必须是static 修饰的(可以通过名直接访问).一般用来打开配置文件...,初始化资源等 @AfterClass :该方法表示测试对象测试完成之后启动的方法, 所以该方法必须是static 修饰的(可以通过名直接访问).一般用来关闭数据库,结束资源等 @Before...@SuppressWarnings("deprecation") : 如果使用使用@Deprecated注释的方法,编译器将出现警告信息。 使用这个注释将警告信息去掉。

1K20

spring boot应用测试框架介绍

测试框架spring-test-dbunit与spring-boot-unitils-starter支持spring-boot应用的测试,同时,也提供单元测试前置数据准备的功能。...二、spring-test-dbunit介绍与应用 2.1、介绍 spring-test-dbunit是spring boot的作者之一Phillip Webb开发的、用于给spring项目的单元测试提供...运行流程为:初始化测试-->开始事务-->准备测试数据-->运行测试方法-->进行expectedData校验-->回滚或者提交事务。...SpringBootModule下的SpringTestListener进行了测试中属性的注入与销毁测试。...但是,spring-test-dbunit与spring-boot-unitils-starter各有优缺点,spring-test-dbunit有良好的文档,但是最近更新版本为2016年版,仅仅是数据库层面的测试工具

1.1K20

动态测试数据让用例活起来-DBRider

而在某些测试场景中,则需要某些数据是需要动态生成的,例如ID、序列号、日期、时间等等。譬如在关于某个订单系统的测试时,系统只会处理当天的数据。...而使用@ExportDataSet导出的数据,则会日期、时间等数据在导出后就不再变化了。这类数据如果是直接导入使用的话,可能会导致测试场景无法触发的问题。...或者一个更为宽泛的问题,如何能够让测试数据可以适应SUT的变化而动态地生成测试数据?当然这是一个比较大的题目,本文只是demo一个非常简单的关于时间的场景。...TWEET: - ID: "1" CONTENT: "dbunit rules!"...USER_ID: 1 TIMESTAMP: "[UNIX_TIMESTAMP]" DBRider提供了[DAY,NOW] 这样的占位符,用以替换时间的字段值。

76510

等价划分法测试用例举例_使用等价划分法设计测试用例

测试用例之等价划分法 测试用例之等价划分 一、 关于测试用例的知识 1、 测试用例的基本概念: 测试用例(案例):test case / test instance 是在测试执行之前,...二、等价划分 1、应用场合:在程序界面中有数据输入的地方,就可以使用等价划分法。挑选少量的代表数据进行测试。...2、测试思想: “穷举测试”:把所有可能的数据全部测试一遍,理论上是最全面的测试,但在实践中通常不能采用(测试时间太长,严重影响测试效率) 采用的测试思想:就是想使用最少的测试数据达到最大的测试效果,但是毕竟没有做...3、“等价划分法”的基本测试思想: 从大量数据中划分范围(等价),然后从每个范围中挑选代表数据,这些代表数据要能反应这个范围内数据的测试结果 4、 两个基本概念 1) 有效等价: 对程序来说有意义的...: 然后根据等价表去编写测试用例,愿各位初学者有所收获。

30910

dbunit实现原理及最佳实践

使用dbunit写单元测试时,强烈建议先熟悉其底层的实现原理,否则可能导致数据表中的数据被清空的风险(尽管测试数据不如线上数据重要,但如果大量的测试数据被清空,导致测试环境不可用,数据恢复起来还是很头疼的...不认同的点有以下两点:第一,参考博客1中说dbunit实现事务的方式是在测试前把数据库里的数据以XML的格式导出来,测试结束之后再将xml格式的数据导入数据库;第二,在运行每一个测试之前先把当前数据库里的数据清空...实际上,运行测试时初始数据的初始化策略是支持配置的。...使用默认配置的推荐方式: @Transactional//加上@Transactional注解才会在单测结束之后回滚事务 //@DatabaseSetup中的value为需要初始化到数据表中的数据...原理,使用其进行单元测试,也是有一定风险的。

73140

策略模式案例II-看DBRider如何导入数据

user).isNotNull(); assertThat(user.getId()).isEqualTo(1); } 从上述代码中可以了解到,@DataSet这个注解用于在测试用例执行前将来自...不过其中的CompositeOperation说明这其中还使用了组合模式,这个可以在后续解读。 策略抽象 策略模式通过一个接口或者抽象来定义策略的运行方法。...来看一下这个案例的图(部分) ? image.png 从图上看,@DataSet注解使用到的数据库操作属于CUD部分,也就是从AbstractOperation这个抽象继承而来的部分。...数据库导入操作 策略模式中,一般都会有一个Context来作为使用某种策略的。 DBRider定义了一个DataSetExecutorImpl,用于实现对数据库的各项操作。...获取策略的工厂方法 而在实际开发中为了将具体策略的创建和使用者隔离,还会结合工厂模式。在DBRider这个案例中,只是简单地使用了getOperation方法。

70430
领券