Fitnesse - Slim Tables
Fitnesse - Slim Tables
2017-09-28
目录
1 什么是Wiki Word?
2 Query Table
2.1 Query Table的格式
2.2 源代码
3 Script Table
3.1 Script Table格式
3.2 源代码
1 什么是Wiki Word?
wiki单词( WikiWord)的语法是驼峰式:小写字母和小写字母的交替模式。第一个字母大写后面跟小写字母或数字,这算一个驼峰,两个及以上驼峰成为wiki单词。
正则表达式如下:
\b[A-Z](?:[a-z0-9]+[A-Z][a-z0-9]*)+
Java类的命名规则是驼峰式的,所有在是用的时候,需要在wikipage中做些修改,防止被fitnesse解释。修改有两种方式:
- 一种是Literal Text:
如下2.2 QueryTable调用的类名为EmpoyeesHiredBefore,在2.1中调用是可以写成:
!-Query:EmpoyeesHiredBefore-!
- 另一种是每个驼峰以空格相隔且首字母小写
正如2.1中的格式:
Query:employees hired before
2 Query Table
2.1 Query Table的格式
Query:employees hired before | 10-Dec-1980 | |||
company number | employee number | first name | last name | hire date |
4808147 | 9942 | Bill | Mitchell | 19-Dec-1966 |
4808147 | 1429 | Bob | Martin | 10-Oct-1975 |
也可以让单元为空,测试是会自动填上:
Query:employees hired before | 10-Dec-1980 | ||
employee number | first name | last name | hire date |
1429 | |||
8832 |
2.2 源代码
package util; import java.util.Date;
import java.util.List; import static java.util.Arrays.asList; public class EmployeesHiredBefore { public EmployeesHiredBefore(Date date) {
} public void table(List<List<String>> table) {
// optional function
} public List<List<List<String>>> query() { return
asList( // table level
asList( // row level
asList("company number", "4808147"), // cell column name, value
asList("employee number", "1429"),
asList("first name", "Bob"),
asList("last name", "Martin"),
asList("hire date", "10-Oct-1974")
),
asList(
asList("company number", "5123122"),
asList("employee number", "8832"),
asList("first name", "James"),
asList("last name", "Grenning"),
asList("hire date", "15-Dec-1979")
)
);
}
}
图1 测试结果
说明:
- Query Table的第一行,第一列单元格:前缀Query:+类名EmployeesHiredBefore,后面的单元格式构造函数的参数。
- QueryTable类必须有一个query方法返回结果行,每一行都是由两个元素构成,一个就是字段名,另外一个就是对应的值(String类型)。
- 从表格中的值从最左边开始匹配返回的结果,如果该行中的第一列不匹配,则该条记录是不匹配的,执行时候就查询失败。
3 Script Table
3.1 Script Table格式
script | login dialog driver | Bob | xyzzy | |
login with username | Bob | and password | xyzzy | |
check | login message | Bob logged in. | ||
reject | login with username | Bob | and password | bad password |
check | login message | Bob not logged in. | ||
check not | login message | Bob logged in. | ||
ensure | login with username | Bob | and password | xyzzy |
note | this is a comment | |||
show | number of login attempts | |||
$symbol= | login message |
3.2 源代码
public class LoginDialogDriver {
private String userName;
private String password;
private String message;
private int loginAttempts; public LoginDialogDriver(String userName, String password) {
this.userName = userName;
this.password = password;
} public boolean loginWithUsernameAndPassword(String userName, String password) {
loginAttempts++;
boolean result = this.userName.equals(userName) && this.password.equals(password);
if (result)
message = String.format("%s logged in.", this.userName);
else
message = String.format("%s not logged in.", this.userName);
return result;
} public String loginMessage() {
return message;
} public int numberOfLoginAttempts() {
return loginAttempts;
}
}
图1 测试结果
说明:
很明显,这个表中每一行都是一条指令。
Script:login dialog driver | Bob | xyzzy |
第一行Script后面跟的是类名LoginDialogDriver和构造函数的参数Bob,xyzzy,这一行称之为actor,如果table中没有actor,就沿用上一个table的actor。
Script table 调用方法可以插入式调用,即方法和参数是相间的,如下所示:
login with username | Bob | and password | xyzzy |
也可以连续调用,可以在单元格方法名后面添加分号,然后紧接的单元格都是入参,如下所示:
login with username and password; | Bob | xyzzy |
- 一行中如果只包含一个方法名,那么只有它返回的是布尔值,才会执行的时候变成绿色或者红色,其他情况不会有颜色
- 如果一个变量在第一个单元格,则它后面应该跟的是方法名,该变量的值就是方法返回的值
- 如果第一个单元格是check,则它后面应该跟的是方法名,最后一个单元格就是期望值
- 如果第一个单元格是check not,则它后面跟的是方法名,最后一个单元格就是不希望的期望值
- 如果第一个单元格是ensure,则它后面跟的是方法名,返回的布尔值如果是true就变成绿色,如果是false就变成红色
- 如果第一个单元格是reject,则它后面跟的是方法名,返回的布尔值如果是false就变成绿色,返回的布尔值如果是true就变成红色
- 如果第一个单元格是note,则在执行的时候就会忽略(空格,以#或者*开头的都是这种效果)
- 如果第一个单元格是show,则它后面跟的是方法名,当这个测试运行的时候,一个新的单元格将会被添加,显示的是该方法的返回值
- 如果第一个单元格是start,它后面跟的应该是一个新的类名和构造函数的参数,会开始一个新的actor,覆盖上面的,它下面的script都会沿用该actor
Fitnesse - Slim Tables的更多相关文章
- Fitnesse Slim的使用
官网上的使用说明:http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.Slim 本文主要介绍Slim常用的几种表格,更多 ...
- Fitnesse-The Slim Tables
Fitnesse 中Slim支持的表格类型 下表内容路径 Decision Table Supplies the inputs and outputs for decisions. This is s ...
- fitnesse - 一个简单的例子(slim)
fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行 2.1 新建wikiPage 2.2 运行 ...
- 扩展Fitnesse的ScriptTable:支持if-then
Fitnesse的ScriptTable只能顺序执行所有行,本博文介绍如何让ScriptTable支持if-then,来条件执行一行. 首先普及一下概念,什么是Fitnesse,听一听.NET版Cuc ...
- 介绍并扩展Fitnesse的测试模块化机制:ScenarioTable
摘要:在验收测试框架Fitneese中,使用Scenario可以把最常用的测试步骤封装起来,从而达到模块化定义Fitnesse测试用例的能力.但Scenario仅限于封装Script测试步骤,Scri ...
- Fitnesse在eclipse中的调试
需要在Fitnesse的wik中添加: '''此句话专门用来Debug'''!define COMMAND_PATTERN {java -Xdebug -Xrunjdwp:transport=dt_s ...
- 初试FitNesse
1.下载fitnesse-standalone.jar 2.在cmd中输入,开启fitnesse server 3.在浏览器中输入: 4.编写代码: package fitnesse.slim.tes ...
- fitnesse - Variables and Symbols
fitnesse - Variables and Symbols 2017-09-30 目录 1 Variables(静态变量) 1.1 定义及使用 1.2 Variable作用域 1.2. ...
- osm2pgsql导入duplicate key error in slim mode
This is a well known issue and one that is likely not going to be addressed any time soon. While the ...
随机推荐
- javascript创建数组的所有方式【Array老师】
1.采用直接量创建 var arr = [];//创建一个空数组 var arr2 = [1,2,3];//创建一个有三个元素的数组 2.采用构造函数创建 a.var arr1 = new Array ...
- Spark 1.6升级2.x防踩坑指南
原创文章,谢绝转载 Spark 2.x自2.0.0发布到目前的2.2.0已经有一年多的时间了,2.x宣称有诸多的性能改进,相信不少使用Spark的同学还停留在1.6.x或者更低的版本上,没有升级到2. ...
- vue中引入swiper(vue中的滑块组件vue-awesome-swiper)
第一步安装 npm install vue-awesome-swiper --save 第二部在main.js中引入 import VueAwesomeSwiper from 'vue-awesome ...
- select选择框在谷歌火狐和IE样式的不同
select选择在不同浏览器不同的显示样式, 在IE中 虽然默认和谷歌一样,但是当点击时向下 按钮消失, 解决方法如下: select { /*Chrome和Firefox里面的边框是不一样的,所以复 ...
- 面向对象五大原则(SRP、OCP、LSP、DIP、ISP)
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt173 OO的五大原则是指 1. SRP(Single Responsibil ...
- 【转】Java虚拟机的JVM垃圾回收机制
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcytp43 1.JVM内存空间 JVM堆(Heap)= 新生代 ...
- String类的重要方法与字段
1.Length():获取当前字串长度 2.charAt(int index):获取当前字符串对象下标index处的字符 3.getChars():获取从指定位置起的子串复制到字符数组中 参数:int ...
- 201521123082 《Java程序设计》第1周学习总结
201521123082 <Java程序设计>第1周学习总结 标签(空格分隔): Java 1. 本周学习总结 0.初步了解Java语言及其发展历史和过程,同时也初步了解了Java具有跨平 ...
- 201521123103 《Java学习笔记》 第六周学习总结
一.本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 二.书面作业 1.clone方法 1.1 Object对象中 ...
- 201521123027 <iava程序设计>第六周学习总结
1. 本周学习总结 1.1 面向对象学习暂告一段落,请使用思维导图,以封装.继承.多态为核心概念画一张思维导图,对面向对象思想进行一个总结. 注1:关键词与内容不求多,但概念之间的联系要清晰,内容覆盖 ...