#测试框架推荐# test4j,数据库测试
时间:2022-05-06
本文章向大家介绍#测试框架推荐# test4j,数据库测试,主要内容包括# 背景、# 介绍、# 重点、# 特点、基本概念、基础应用、原理机制和需要注意的事项等,并结合实例形式分析了其使用技巧,希望通过本文能帮助到大家理解应用这部分内容。
# 背景
后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢?
# 介绍
test4j,github地址:https://github.com/test4j,看名字感觉还是公司的大神维护了一段时间的,膜拜大神,Orz
Test4J原名叫jTester,本来是发布在google上的一个开源项目,后来迁移到github,并且由于域名的缘故,更名为[Test4J]
Test4J是一个单元测试和业务流程测试框架,其基本功能包括如下:
单元测试功能
- Fluent方式的断言,内置了大部分常用的断言语法,特别是对象反射断言功能尤其强大。
- Junit和testNg语法扩展,使用@DataFrom方式扩展junit的数据驱动测试功能;@Group语法让junit支持分组测试;模块嵌入的方式让junit和testng支持功能扩展。
- 集成jMockit框架,让mock更自由自在。
- 对象自动填充功能,反射工具。
集成测试工具包
- 支持Spring集成测试,spring容器可以mock对象,自定义对象无缝集成。
- 数据库测试支持,使用DataMap对象,Json数据准备数据,或者验证数据,同时支持数据库数据的Fluent断言。
业务驱动测试工具包
- 支持编写可读的用例,并在用例中嵌入测试用数据,框架自动转换为可执行代码。
- 支持用例步骤的重复利用,简化用例编写难度。
# 重点
重点讲的是数据库测试这块
1. 引入maven依赖
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6.SEC02</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>org.test4j</groupId>
<artifactId>test4j.testng</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.test4j</groupId>
<artifactId>test4j.integrated</artifactId>
<version>2.0.6</version>
</dependency>
2. 配置test4j.properties文件
在resources目录新增test4j.properties文件
database.type=mysql
database.url=jdbc:mysql://localhost/presentationtdd?characterEncoding=UTF8
database.userName=root
database.password=password
database.schemaNames=presentationtdd
database.driverClassName=com.mysql.jdbc.Driver
3 . demo代码
package com.jwen.test;
import org.test4j.testng.Test4J;
import org.testng.annotations.Test;
import java.util.Date;
public class DataMapDemo extends Test4J {
@Test
public void datamaptest() {
db.table("demo").clean().insert(1, new DataMap() {
{
this.put("name", "jwen");
}
}).commit();
}
@Test
public void testEqMap() {
db.table("demo").query().propertyEqMap(new DataMap() {
{
this.put("id", 4);
this.put("name", "jwen1");
}
});
}
@Test
public void insertMutiDate() {
db.table("demo").clean().insert(5, new DataMap() {
{
this.put("id", DataGenerator.increase(100, 1));
this.put("name", DataGenerator.random(String.class));
this.put("email", new DataGenerator() {
@Override
public Object generate(int i) {
return value("name") + "@163.com";
}
});
this.put("day", new Object[]{new Date(), "2018-03-03"});
}
}).commit();
}
//{"id":1,"name":"jwen","email":"jwen@163.com","day":"2018-8-08"}
@Test
public void insertDataByJsonString() {
db.table("demo").clean().insert("{"id":1,"name":"jwen","email":"jwen@163.com","day":"2018-8-08"}").commit();
}
@Test
public void testExecute(){
}
}
当然这都是一些基本操作
# 特点
1. 使用过java的mybatis,python的SQLAlchemy,目前test4j的数据库这块更加简洁易懂
2. 支持断言,这个是很难得,我之前的测试思路把查询出来的结果变成json串,然后通过JsonAssert去断言;
3. 断言结果友好,可以提示到哪个字段错误;
- Heartbeat使用梳理
- JQuery笔记(二) animate支持的属性
- 腾讯叮当首次系统性展示AI能力 开放日展示实战型解决方案
- Execute 方法(Find 对象)
- 在容器中部署mysql与数据持久化
- silverlight如何在运行时用代码动态控制(或创建)动画
- 小程序深夜连发4大功能!你们要的直播来了!
- 机器学习在现实生活中到底有哪些应用?
- 千锋郑州告诉你未来十年Python市场前景如何
- 读书笔记:基于web的工作流引擎设计
- 地图知识-坐标网
- silverlight/xap如何接收参数?
- Silverlight中多个Xaml("场景"? or "窗口"? )之间的切换/调用/弹出/传参数问题小结
- Keepalived使用梳理
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- 树义带你学 Prometheus(六):Spring Boot Actuator 实现应用监控
- 树义带你学 Prometheus(七):SpringBoot 实现自定义指标监控
- 布尔型盲注的PY交易
- 一文详解「队列」,手撸队列的3种方法!
- 代理模式
- Swift:Lable 高度计算误差
- 基于python检查SSL证书到期情况代码实例
- Python搭建Keras CNN模型破解网站验证码的实现
- PyCharm 在Windows的有用快捷键详解
- Python 自动化测试(三): pytest 参数化测试用例构建
- 基于Android平台实现拼图小游戏
- kotlin项目加入Glide图片加载库并使用GlideApp的方法
- Android实现百分比下载进度条效果
- 实验2 OpenGL交互
- 深入了解OkHttp3之Interceptors