# 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 ![Alt text](doc/input.png) * 场景1 ,按照主键比较 ![Alt text](doc/case1.png) * 场景1 按照条件比较 ![Alt text](doc/case2.png) * excel 管理 ![Alt text](doc/excel.png) ## 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里使用注释,在每个数据快上部一行第一个单元格里使用##: 表示注释 ![Alt text](doc/comment.png)