用YAML构建数据测试DAO层
测试DAO层最常见的就是直接组织数据,调用相关的方法,然后查看数据库,看看相关数据是否在DB中正确的展示。这样测试,效率低下,容易出错,过多的依赖了人肉。如果选择测试数据来配置,根据配置的测试数据验证相关信息,或许能够达到事半功倍的效果。
测试数据配置选择(YAML)
在JavaBean中,传统的对象set是这样的:
pvs.setId(100L); pvs.setCookieAdvert(1); pvs.setCookieAdList("1");
对象属性多时,对象的set显得有些复杂,自动代码生成工具生成的代码较多都是set数据的,代码看起来不够雅观,需要把测试数据和测试代码分离。可以提供参考的又xml,wiki的方式。xml的方式读取大家都比较清楚,这里介绍一下wiki:
wiki语法
|table|表名称| |字段名称1|字段名称2|字段名称3| |字段值|字段值|字段值| |字段值|字段值|字段值| |字段值|字段值|字段值|
通过wiki配置的方式,和表字段一一对应,看起来比较直观,只是在字段较多时容易造成混淆,同时需要自己写代码支持wiki语法,框架级别的支持不够。xml配置也麻烦,数据阅读也不够直观。
yaml简单,直观,方便阅读,java支持框架(http://yaml.org/)较多,所以选择yaml来配置测试数据。和TestNg保持一致,使用snakeyaml (http://code.google.com/p/snakeyaml/)
测试过程:
测试数据包括BaseDao对DB的基本操作:insert , update , find , findById , list , listCount , delete。由于findById和delete都是只有一个字段,所以测试数据基本生成只有insert , update ,delete , list这四个,业务模块可以根据自己的需求添加相关的Dao层测试数据。
测试修改示例:
insert: !!com.longtask.analysis.report.domain.entity.User pv: 1 uv: 1 ip: 1 liveTime: isDate: 1 startTime: 1 endTiem: 1 addTime: 1 update: !!com.longtask.analysis.report.domain.entity.User pv: 1 uv: 1 ip: 1 find: !!com.longtask.analysis.report.domain.entity.User pv: 1 uv: 1 ip: 1 list: !!com.longtask.analysis.report.domain.entity.User pv: 1 uv: 1 ip: 1
说明:
数据读取的代码
读取yaml配置文件数据,放置到map中的代码:
public Map
try {
Yaml yaml = new Yaml();
@SuppressWarnings("unchecked")
Map
.getResourceAsStream("/" + name));
return data;
} catch (Exception e) {
logger.error("init yaml error : " , e);
throw new RuntimeException("init yaml error : " , e);
}
}
子类中测试代码
@BeforeMethod
public void setBefore() {
String pg = this.getClass().getPackage().getName().replace(".", "/");
data = super.getYamlData( pg + "/UserDaoTest.yaml");
}
private Map
调用data中的属性,获取到相关对象
User user = data.get("insert");
代码生成工具如果用yaml配置,彻底分离了测试数据准备和代码,会让测试更加简单!
建议继续学习:
扫一扫订阅我的微信号:IT技术博客大学习
- 作者:longhao 来源: 龙浩的blog
- 标签: DAO YAML
- 发布时间:2011-10-17 22:40:21
- [71] Twitter/微博客的学习摘要
- [66] IOS安全–浅谈关于IOS加固的几种方法
- [65] find命令的一点注意事项
- [64] android 开发入门
- [63] 如何拿下简短的域名
- [63] Go Reflect 性能
- [61] Oracle MTS模式下 进程地址与会话信
- [61] 流程管理与用户研究
- [58] 图书馆的世界纪录
- [58] 读书笔记-壹百度:百度十年千倍的29条法则