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解释。修改有两种方式:

    如下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 测试结果

说明:

  1. Query Table的第一行,第一列单元格:前缀Query:+类名EmployeesHiredBefore,后面的单元格式构造函数的参数。
  2. QueryTable类必须有一个query方法返回结果行,每一行都是由两个元素构成,一个就是字段名,另外一个就是对应的值(String类型)。
  3. 从表格中的值从最左边开始匹配返回的结果,如果该行中的第一列不匹配,则该条记录是不匹配的,执行时候就查询失败。

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的更多相关文章

  1. Fitnesse Slim的使用

    官网上的使用说明:http://www.fitnesse.org/FitNesse.UserGuide.WritingAcceptanceTests.Slim 本文主要介绍Slim常用的几种表格,更多 ...

  2. Fitnesse-The Slim Tables

    Fitnesse 中Slim支持的表格类型 下表内容路径 Decision Table Supplies the inputs and outputs for decisions. This is s ...

  3. fitnesse - 一个简单的例子(slim)

    fitnesse - 一个简单的例子(slim) 2017-09-30 目录1 编写测试代码(Fixture code)2 编写wiki page并运行  2.1 新建wikiPage  2.2 运行 ...

  4. 扩展Fitnesse的ScriptTable:支持if-then

    Fitnesse的ScriptTable只能顺序执行所有行,本博文介绍如何让ScriptTable支持if-then,来条件执行一行. 首先普及一下概念,什么是Fitnesse,听一听.NET版Cuc ...

  5. 介绍并扩展Fitnesse的测试模块化机制:ScenarioTable

    摘要:在验收测试框架Fitneese中,使用Scenario可以把最常用的测试步骤封装起来,从而达到模块化定义Fitnesse测试用例的能力.但Scenario仅限于封装Script测试步骤,Scri ...

  6. Fitnesse在eclipse中的调试

    需要在Fitnesse的wik中添加: '''此句话专门用来Debug'''!define COMMAND_PATTERN {java -Xdebug -Xrunjdwp:transport=dt_s ...

  7. 初试FitNesse

    1.下载fitnesse-standalone.jar 2.在cmd中输入,开启fitnesse server 3.在浏览器中输入: 4.编写代码: package fitnesse.slim.tes ...

  8. fitnesse - Variables and Symbols

    fitnesse - Variables and Symbols 2017-09-30 目录 1 Variables(静态变量)  1.1 定义及使用  1.2 Variable作用域    1.2. ...

  9. 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 ...

随机推荐

  1. 慕课网视频破解付费分享-前端开发-Python等

    微信小程序 慕课网   BAT大牛经验总结全面深入解读Android面试   前端JS基础面试技巧   vue2.0+node.js+mongodb全栈打造商城   Vue.js高级实战-开发移动端音 ...

  2. CAP和BASE理论

    详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt370 1. CAP理论 2000年7月,加州大学伯克利分校的Eric Bre ...

  3. 基于AXI4总线卷积FPGA加速IP核的尝试

    本文先总结不同AXI IP核的实现的方法,性能的对比,性能差异的分析,可能改进的方面.使用的硬件平台是Zedboard. 不同的AXI总线卷积加速模块的概况 这次实现并逐渐优化了三个版本的卷积加速模块 ...

  4. Js函数初学者练习(一)switch-case结构实现计算器。

      前  言 JRedu 给大家介绍一点JS函数的练习题希望初学者多做一些练习能够更好的掌握JS的函数,以及能够提升大家的逻辑思维.(我也是个渣渣希望路过的大神多提建议或意见) 希望能够对大家有所帮助 ...

  5. 四则运算GUI

    一.题目描述 我们在个人作业1中,用各种语言实现了一个命令行的四则运算小程序.进一步,本次要求把这个程序做成GUI(可以是Windows PC 上的,也可以是Mac.Linux,web,手机上的),成 ...

  6. 团队作业4---第一次项目冲刺(ALpha)版本 第五天

    一.Daily Scrum Meeting照片 二.燃尽图 三.项目进展 a.完成所有基础功能 b.正在进行测试调试 四.困难与问题 1.根据测试需求功能,部分基础功能不能实现,性能不达标,后续已完成 ...

  7. 第1周-java作业总结与建议

    1. 本周作业简评与建议 存在的问题: 这周的作业普遍存在一个格式混乱的问题.请认真学习Markdown,我们后面的作业都要使用Markdown.Markdown学习请参考http://group.c ...

  8. 201521123093 java 第九周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 2. 书面作业 本次PTA作业题集异常 1.常用异常 题目5-1 1.1 截图你的提交结果(出现学号) 1.2 自己 ...

  9. 201521123059 《Java程序设计》第十三周学习总结

    1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 1.协议 --网络中为了进行数据交换(通信)而建立的规则.标准或约定(=语义+语法+规则),比如http, ...

  10. 多线程:多线程设计模式(二):Future模式

    一.什么是Future模型: 该模型是将异步请求和代理模式联合的模型产物.类似商品订单模型.见下图: 客户端发送一个长时间的请求,服务端不需等待该数据处理完成便立即返回一个伪造的代理数据(相当于商品订 ...