博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
#测试框架推荐# test4j,数据库测试
阅读量:5832 次
发布时间:2019-06-18

本文共 3106 字,大约阅读时间需要 10 分钟。

# 背景

后端都是操作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=mysqldatabase.url=jdbc:mysql://localhost/presentationtdd?characterEncoding=UTF8database.userName=rootdatabase.password=passworddatabase.schemaNames=presentationtdddatabase.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. 断言结果友好,可以提示到哪个字段错误;

虽千万人,吾往矣!

转载地址:http://rtrdx.baihongyu.com/

你可能感兴趣的文章
python 异常
查看>>
百度账号注销
查看>>
mysql-This version of MySQL doesn’t yet support ‘LIMIT & IN/ALL/ANY/SOME 错误解决
查看>>
BIEE Demo(RPD创建 + 分析 +仪表盘 )
查看>>
Cocos2dx 3.0开发环境的搭建--Eclipse建立在Android工程
查看>>
基本概念复习
查看>>
重构第10天:提取方法(Extract Method)
查看>>
Android Fragment使用(四) Toolbar使用及Fragment中的Toolbar处理
查看>>
解决pycharm在ubuntu下搜狗输入法一直固定在左下角的问题
查看>>
多线程day01
查看>>
react-native 模仿原生 实现下拉刷新/上拉加载更多(RefreshListView)
查看>>
MySQL出现Access denied for user ‘root’@’localhost’ (using password:YES)
查看>>
通过Roslyn构建自己的C#脚本(更新版)(转)
查看>>
红黑树
查看>>
python调用windows api
查看>>
第四章 mybatis批量insert
查看>>
Java并发框架——什么是AQS框架
查看>>
【数据库】
查看>>
Win配置Apache+mod_wsgi+django环境+域名
查看>>
linux清除文件内容
查看>>