博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Fitnesse - Slim Tables
阅读量:6913 次
发布时间:2019-06-27

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

Fitnesse - Tables

2017-09-28

目录

1
2
  2.1
  2.2
3
  3.1
  3.2  

 

 

1 什么是Wiki Word?


 

wiki单词( )的语法是驼峰式:小写字母和小写字母的交替模式。第一个字母大写后面跟小写字母或数字,这算一个驼峰,两个及以上驼峰成为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
> table) { // optional function } public List
>> 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") ) ); }}
View Code

图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; } }
View Code

 

图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

 

转载于:https://www.cnblogs.com/Ming8006/p/7607127.html

你可能感兴趣的文章
leetcode 120 三角形最小路径和
查看>>
圣杯布局进阶版-flex布局实现
查看>>
《速度与激情》范迪塞尔代言!雅迪和高端“死磕”到底
查看>>
LLDB 知多少
查看>>
淘宝、网易移动端 px 转换 rem 原理,Vue-cli 实现 px 转换 rem
查看>>
js监听gif停止 libgif-js Gif 操作(开始,暂停,移动帧...) 功能强大
查看>>
java并发编程 • 核心 • 状态管理
查看>>
[译] 从没有人告诉过我的 CSS 小知识
查看>>
这个乐趣,支付宝落地实践
查看>>
Golang 1.x版本泛型编程
查看>>
武汉区块链软件技术公司:区块链应用为何成为现实版的“海市蜃楼”
查看>>
关于制作pod时使用xib等资源文件的问题
查看>>
《代码大全》读书笔记-构建的前期
查看>>
混合云管理问题,你解决了么?
查看>>
从简单二叉树问题重新来看深度优先搜索
查看>>
python 爬虫系列-入门教程(2)
查看>>
学习前端,必须要知道的五个学习建议!
查看>>
面试了若干位Java后端的候选人,给广大程序员的一点建议
查看>>
ios 高德地图
查看>>
php PSR 1 basic coding standard
查看>>