# ormunit
**Repository Path**: xiandafu/ormunit
## Basic Information
- **Project Name**: ormunit
- **Description**: beetlsql unit test
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2016-11-03
- **Last Updated**: 2022-07-04
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ormunit
单元测试框架,使用excel,作为输入,以及输出比较,适合大量数据库操作.仅仅为beetsql+spring项目使用
# 安装
然后在项目里引用
com.ibeetl
ormunit
${version}
test
# 预览
## 代码
## excel
可以将测试数据写在excel里,或者通过数据库客户端工具粘贴到excel里完成数据的输入。
* 输入sheet

* 场景1 ,按照主键比较

* 场景1 按照条件比较

* excel 管理

## api
* VariableTable 变量表,xls里申明的变量或者操作数据库后的序列都放到此表里里,可以通过find方法,或者findSocpe获取变量
vars.find("abc.age") 返回值
vars.findInteger("abc.age") 返回整形
vars.findScope("abc") 返回age,date name
* XLSParser 用于解析输入,计算后,与输出比较,init 公共输入,prepare(sheetName, vars),场景的数据准备 (这个不是必须调用的), test(sheetName, vars);将数据库结果与sheetName 描述的数据做对比
* XLSBeanUtil 用于生成一个entity,输入时Map(来源于VariableTable),以及对象实例
Map map = new HashMap();
map.put("gender", 1);
User user = new User();
XLSBeanUtil.copyPropesrties(map, user);
# excel 格式
##格式和符号
excel 总是有一个空行来区分数据块
excel使用##放在第一列作为指令开始,
* 如果后面紧跟冒号,则表示注释
* 如果是一个小写的变量名,则表示下面俩行是变量
* 如果是大写名,则表示下面多行是数据库数据
* 如果是includeSheet 则表示使用一个excle sheet作为输入 (注意,includeSheet只能使用在输入sheet里)
注意:每一个excel包含了多个sheet,第一个sheet被parser忽略,一般用来介绍测试需求,以及每个sheet代表的测试场景。
excel 使用$来表示一个变量(如果$放在列名前,表示这是主键),也可以使用表达式,类似模板语言那样,需要用${} ,比如: ${12+1},${abc.age+1},
## 输入
excel第2个sheet是作为输入,可以初始化变量表和初始化数据库。无论是变量表还是数据库表,都必须用**空行**分开
* 变量表以##符号开头,后面紧紧跟以小写开头的变量scope名字。紧接一行是变量名字,再一行是变量值。变量类型取决于excel单元格类型,目前支持字符串,日期和number 类型。 ormunit 将单元格数据赋值到数据库或者目标对象的时候,会自动转为目标类型,所以建议excel单元格类型最好都是字符串格式
* 表数据以##符号开头,后面紧接跟着以大写开头的变量,下一行是列名字,如果是主键,需要加前缀 $ 加以说明。 紧接着的若干行是表数据,将通过用户配置方式,如JPA,Hibenate,或者SQL导入 插入到数据库里,如果主键是序列或者其他方式生成,可以使用$变量名,这样插入到数据库后,将id的值回传给变量表
如果表数据表名的第二列单元格有includeTable ,则表示数据来源于其它sheet,如 "##DICT includeTable /xxx.xls sheetName",表示初始化表格DICT,数据来源于xxx.xls。
* 除了includeTable外,还有includeSheet,“##includeSheet /xxx.xls sheetName” 可以重用整个输入
## 输出
输入sheet后的多个sheet作为场景比较sheet,结构类似输入,也包含变量表和表数据。当表数据完全匹配的时候,单元测试通过,否则,将提示此sheet的某一行,与数据库比较出错。
## 例子
参考beetlsql单元测试或者本项目单元测试
# ormunit 的变量
ormunit 中的 变量都保存在VariableTable里,可以通过java赋值,更多的情况是在excel里申明,也可以在表初始化数据里申明,如序列,uuid等字段
可以再任何地方使用$变量名方式在输入和场景里使用这些变量,如果变量已经存在,则对excel相应位置赋值,如果不存在变量,则改行执行过后,将该excel位置的得出的变量赋值该变量以供后面的处理
所有以fn开头的都是方法调用,比如fn.date ,获取当前时间,fn.seq 生成一个不重复的序列号,值为long型,你可以注册更多fn.xxx 方法来完成方法调用
# 注释
允许excel里使用注释,在每个数据快上部一行第一个单元格里使用##: 表示注释
