DBUnit--测试数据准备与验证的利器
来源:互联网 发布:win7网络图标灰色 编辑:程序博客网 时间:2024/05/21 17:19
单元测试时数据的准备与验证是一个很繁琐的过程,DBUnit为之提供了一套优雅的解决方案,可以帮我们从中解脱出来。
DBUnit数据准备
DBUnit支持将准备的数据放置在一个xml文件中,在执行测试用例之前自动同步到数据库中,执行完成后数据也可以自动销毁。示例如下:
<?xml version="1.0" encoding="UTF-8" ?><dataset> <User UserId="200" UserName="tony" Age="25" pointValue="2000" /></dataset>
User表示是数据库中的表,UserId、UserName等表示表中的字段。我们可以在dataset中写入多个这样的记录,文件中每条记录对应数据库表中的一行记录。
DBUnit数据验证
假如我们执行一个测试用例把上面的记录中的pointValue=”2000” 更新为2500,通常的验证方式是更新后再去查询数据库再做比对。而DBUnit支持你将一个预期结果写到xml文件中,当测试用例更新完后会和数据库中的数据自动做比较,看看是否符合预期。下面是预期结果的xml文件
<?xml version="1.0" encoding="UTF-8" ?><dataset> <User UserId="200" UserName="tony" Age="25" pointValue="2500" /></dataset>
由于DBUnit官方提供的用法和测试用例耦合太强,这里比较推荐spring-test-dbunit,我们可以通过几个简单的注解实现与测试的解耦:
@DatabaseSetup :将特定xml文件中的数据同步到数据库
@DatabaseTearDown: 清理数据
@ExpectedDatabase :数据验证,
其assertionMode属性支持两种验证方式–DatabaseAssertionMode.DEFAULT 要验证所有的字段,DatabaseAssertionMode.NON_STRICT则支持只验证部分字段,这个实际测试中更为常用,毕竟多数情况下并不需要验证所有的字段。
此外,@ExpectedDatabase只能用于增删改三种场景!
上面这几个注解要起作用,记得首先要在@TestExecutionListeners中配置DbUnitTestExecutionListener,具体用法下篇会有完整示例。
下面是spring-test-dbunit注解的用法的示例:
@Test @DatabaseTearDown @DatabaseSetup("/data/user-setUpData.xml") @ExpectedDatabase(table = "User", assertionMode= DatabaseAssertionMode.NON_STRICT, value= "/data/updatePoint-exceptedData.xml") public void testUpdatePointValue() throws Exception { int result = userDao.updatePointValue(200L,2500L); Assert.assertEquals(result,1); }
这里,@DatabaseSetup会把/data/user-setUpData.xml文件中的数据同步到数据库,然后执行updatePointValue,将pointValue更新为2500,最后再拿数据库中更新后的数据和/data/updatePoint-exceptedData.xml文件中的数据做比较。@DatabaseTearDown则测试用例执行完后重置数据库清理掉数据。
更多内容欢迎关注个人微信公众号,一起成长!
- DBUnit--测试数据准备与验证的利器
- 准备测试数据的利器DBUNIT介绍
- 生成dbunit的测试数据xml格式
- 用 dbunit-maven-plugin 来管理你的测试数据
- 基于测试数据覆盖率的测试数据准备的手法示例
- 特殊行业自动化测试数据的准备
- 第十七篇【测试数据准备的那些事儿】
- 用dbunit导入和导出数据库测试数据
- DBUnit插入数据(准备)
- 如何准备测试数据?
- 如何准备测试数据?
- 浅谈测试数据准备
- 如何准备性能测试数据
- 【性能测试】-测试数据准备
- 接口测试数据准备策略的几点看法
- 第十八篇【测试数据准备的那些事儿--后话】
- ORACLE EBS财务的数据准备与数据验证
- DBUnit与Ant使用
- JavaWeb 之向BUG1.2
- [资源分享]一些模型
- java序列化
- HttpFileCollection类
- 数据结构笔记——堆栈
- DBUnit--测试数据准备与验证的利器
- C++基础之类
- 史上最简单的 MySQL 教程(二十三)「数据的高级操作 之 查询(上)」
- 数组
- python 控制adb
- (hdu6033)Add More Zero(数学,取对数)
- C++中extern函数介绍
- poj1328 Radar Installation
- apt-get install 时lock问题