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 ...
随机推荐
- Mysql 数据库date, datetime类型设置0000-00-00默认值(default)报错问题
Mysql 数据库date, datetime类型设置0000-00-00默认值报错问题 现象:MySQL5.7版本之后,date, datetime类型设置默认值"0000-00-00&q ...
- Javascript学习日志(三):闭包
说实话,前面一节的原型和原型链在当初学的时候并没有很头疼,对着高级编程第三版撸了几遍就理解透了,闭包这一节真的挺头疼的,很惭愧,看了差不多十来遍吧,还翻看了网上的其他博客和解释文档,五花八门的表达方式 ...
- ASP.NET 控制器
1.继承Controller public class TestController : Controller2.编写控制器方法 // URL : test/Edit/1 [ ...
- K好数--蓝桥杯
JAVA版K好数--蓝桥杯 历经千辛万苦,也算是研究出来了这道题了. 这道题主要运用了动态规划(Dynamic Planning)的思想,何谓动态规划?其实就是将一个大问题分成一个个小问题,然后先通过 ...
- 201521123091 《Java程序设计》第8周学习总结
Java 第八周总结 第八周的作业. 目录 1.本章学习总结 2.Java Q&A 3.码云上代码提交记录及PTA实验总结 1.本章学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集 ...
- 4th-结对编程2
0x00 Coding Coding地址/小伙伴的博客地址 合作伙伴:庞伊凡(201421123011).赵娅汀(201421123012) 0x01 题目描述 上一周大家为四则运算程序设计了2-3个 ...
- 个人作业1——四则运算题目生成程序(基于java)
项目代码: https://git.coding.net/YJh_/11.git 题目要求: 除了整数以外,还要支持真分数的四则运算,真分数的运算,例如:/ + / = / 运算符为 +, −, ×, ...
- 201521123081《Java程序设计》 第4周学习总结
1. 本周学习总结 1.1 尝试使用思维导图总结有关继承的知识点. 参考资料:百度脑图(上图为第3周实验学习总结中未展开部分) 1.2 使用常规方法总结其他上课内容. 多态.思维导图中有提及. 2. ...
- [BT5]信息收集1-1 Dnsenum
0.工具介绍 The purpose of Dnsenum is to gather as much information as possible about a domain. The progr ...
- 201521123055 《Java程序设计》第12周学习总结
1. 本章学习总结 2. 书面作业 将Student对象(属性:int id, String name,int age,double grade)写入文件student.data.从文件读出显示. Q ...