Jtester使用
1、在Jtester中使用DataMap
为什么要使用DataMap?
早先的jTester中提供了dbFit方式来准备和验证数据库数据,应该来说,这个工具解决了很多问题。
实际使用过程中,开发同学反映编辑和准备数据比较麻烦。数据操作错误需要在单独的html文件中才能
查看到,也比较麻烦。 jTester从1.1.6开始推出了一种新的数据库数据准备和验证的方法 -- DataMap方
式。DataMap对比DbFit有以下几个特性:
• 准备数据和验证数据是在java代码中,无需额外的文件。
• 因为只有java代码,数据编辑会更方便一些。
• 验证数据库数据和jTester中其它断言方式一致,错误信息直接显示在测试方法上。
• 只需要关注自己感兴趣的字段,无关的字段框架自动会帮忙填充。
• 构造数据灵活,可以根据自己需要构造特定规则的数据。
我们下面通过示例来简单的演示jTester是如何通过DataMap往数据库中插入数据和验证数据中已
经存在的数据。
例 4.1. 往数据库中插入一条数据
db.table("tdd_user").clean().insert(new DataMap() {
{
this.put("id", "1");
this.put("first_name", "darui.wu");
this.put("my_date", new Date());
}
}).commit();
DataMap(它是 LinkedHashMap<String, Object> 子类)是jTester中用于准备和验证数据的关键对
象, 上面那段代码完成了4件事:
• db.table("tdd_user")
指定了插入数据的操作对象(表tdd_user),这条语句接下的操作都是针对表tdd_user的。
• clean()
清空表tdd_user中所有数据。
• insert( ... )
往表tdd_user中插入一条数据,其中id字段值为1,first_name字段值为
darui.wu,my_date字段值为客户端的当前日期。
• commit()
提交前面删除数据操作和插入数据操作。
运行上面那段简单的代码后,数据库中数据状态应该如下:

配置jtester.properties文件
要在jTester矿建下进行数据库的相关的测试,必须在测试代码的classpath根路径下放置一个jtester.properties文件。并在该文件中配置相应的数据源。
在classpath根路径下建好jtester.properties文件后,需要配置下面选项的值。
• database.type
数据库类型,目前支持mysql,oracle两种
• database.url
数据库连接url,比如jdbc:mysql://localhost/presentationtdd?
characterEncoding=UTF8
• database.userName
连接数据库的用户名
• database.password
用户密码
• database.schemaNames
数据库的具体schema
• database.driverClassName
数据库连接驱动class的全称
为了方便大家理解,下面分别给一个mysql配置示例和一个oracle配置示例
例 4.3. mysql配置示例
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
例 4.4. oracle配置示例
database.type=oracle
database.url=jdbc:oracle:thin:@localhost:1521:crmp?args[applicationEncoding=UTF-8,databaseEncoding=UTF-8]
database.userName=root
database.schemaNames=test
database.password=xxxx
database.driverClassName=com.alibaba.china.jdbc.SimpleDriver
验证数据库中数据总数:
db.table("tdd_user").count.eq(1);
验证数据库中的数据:
db.table("tdd_user").query().propertyEqMap(newDataMap() {
{
this.put("id", 1);
this.put("first_name", "wu");
this.put("last_name", "json");
}
});
带条件的数据查询验证:
db.table("tdd_user").queryWhere("post_code=310012").propertyEqMap(2, newDataMap() {
{
this.put("id", 1, 2);
this.put("first_name", "darui.wu", "data.iterator");
this.put("address_id", 0);
this.put("sarary", 0.0);
}
}, EqMode.IGNORE_ORDER);
2、在Jtester中使用Mock
new MockUp<ResourceFacility>(){
@Mock
public List<NoahResourceModel> getNoahResourceByResType(String resType){
List<NoahResourceModel> rs = new ArrayList<NoahResourceModel>();
NoahResourceModel r= new NoahResourceModel();
r.setName("customer_key_1");
r.setValue("qt_key_1");
rs.add(r);
r= new NoahResourceModel();
r.setName("customer_key_2");
r.setValue("qt_key_2");
rs.add(r);
return rs;
}
};
3、测试分组
1、将某个测试方法归为某个测试分组
@Test(groups={"tests.find"})
public class FindServiceTest extends AegeanDomainBaseTest{
@Test
public void testGroup(){
}
}
Jtester使用的更多相关文章
- 单元测试利器之Jtester
http://kiral.iteye.com/blog/900975 名词解释: Junit:众所周知的单元测试. 官方网址:http://junit.sourceforge.net/.Junit从4 ...
- Jtester+unitils+testng:DAO单元测试文件模板自动生成
定位 本文适合于不愿意手工编写而想自动化生成DAO单元测试的筒鞋.成果是不能照搬的,但其中的"创建模板.填充内容.自动生成"思想是可以复用的.读完本文,可以了解 Python 读取 ...
- Test4J与Jtester单元测试常用注解比较
package com.alibaba.ceres.catalog.biz.product.impl; import org.junit.After; import org.junit.Before; ...
- 编写更少bug的程序的六条准则
如何编写更少bug的程序? 尽可能避免常见的程序错误. 沟通设计先行 + 编写可复用代码 + 做得更多 + 做的更少 + 创造“编程心流”+ 严格的程序测试 ...
- 自己实现的一款在线Javascript正则表达式测试器——JRE-Parser
本文最初发布于我的个人博客:http://jerryzou.com/posts/jreparser/ 昨天在看<正则表达式30分钟入门教程>的时候,看到博主自己实现了一个C#写的正则测试器 ...
- 情景linux--shell如何实现多线程?
情景linux--shell如何实现多线程? 情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的. ...
- 情景linux--如何摆脱深路径的频繁切换烦恼?
情景 通常情况下,在linux系统上切换目录的成本很低,使用cd命令就可以了.如果需要在一个目录的不同的子目录和其父目录之间切换,进入到这个目录之后,再使用相对路径会比较方便.如果要切换的目录的路径较 ...
- [转]linux shell 多线程实现
情景 shell脚本的执行效率虽高,但当任务量巨大时仍然需要较长的时间,尤其是需要执行一大批的命令时.因为默认情况下,shell脚本中的命令是串行执行的.如果这些命令相互之间是独立的,则可以使用“并发 ...
- #测试框架推荐# test4j,数据库测试
# 背景 后端都是操作DB的,这块的自动化测试校验的话,是需要数据库操作的,当然可以直接封装方法来操作数据,那么有没有开源框架支持数据操作,让我们关注写sql语句?或者帮我们做mysql的断言呢? # ...
随机推荐
- Codeforces Round #499 (Div. 2) C.FLY 数学推导_逆推
本题应该是可以使用实数二分的,不过笔者一直未调出来,而且发现了一种更为优美的解法,那就是逆推. 首先,不难猜到在最优解中当飞船回到 111 号节点时油量一定为 000, 这就意味着减少的油量等于减少之 ...
- Someing-About-Work
投料分拨次评估1.调试线投料分波次:(由调试厂录入生产计划:按照实际装机计划做二次分拣)1)计划组必须改两次工单:因为使用的是不同的任务号,一次一次分拣,一次二次分拣,2)计划核对数量困难,不能按照制 ...
- php 文件加载方式
两种加载文件的方式 include require 使用场景: 动态加载文件的时候,使用include,否则使用require. 示例: # 引入php文件--include方式 inlcude(&q ...
- 使用uglifyjs压缩JS
一般vue项目完成打包以后需要优化,特别是首次打开加载速度们,webpack打包以后js文件体积很大等方法,可以用这个方法来压缩js文件 安装node.js 安装当前应用 -- uglifyjs 如何 ...
- mysql存储小数
线下不知道什么版本的古董了,经本人亲测,varchar类型的数据,可以直接执行mysql的sum函数. ________________________________________________ ...
- 【【henuacm2016级暑期训练】动态规划专题 L】Civilization
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给一个森林. 就是由很多棵树组成.. 然后会询问你其中一棵树的最长链. 初始状态的最长链可以用两遍dfs分别找最长路得到. 然后要求 ...
- shell 测试命令
一.使用 test 命令可以对文件.字符串等进行测试,一般配合控制语句使用. 1.字符串测试 test str1 = str2 //测试字符串是否相等 test str1 != str2 //测试字符 ...
- PatentTips - Cross-domain data transfer using deferred page remapping
BACKGROUND OF THE INVENTION The present invention relates to data transfer across domains, and more ...
- angular-模块Module
模块定义了一个应用程序. 模块是应用程序中不同部分的容器. 模块是应用控制器的容器. 控制器通常属于一个模块. <div ng-app="myApp" runoob-dire ...
- POJ 3071
求概率.其实跟枚举差不多,输入n即是要进行n轮比赛.对每一支球队,设求1的概率,首先1要与2比赛为p1,这是第一轮,第二轮时,1要与3(打败3为p2),4(打败4为p3)中胜者比赛,由于是概率,则两者 ...