Fitnesse系列六

Table 表

基本上这一节就是文档翻译,不打算写示例了,原因结尾会说。

Table表的意思是你可以写出任意样式的表格来。那么任意样式的表格是如何被fitnesse识别并执行的?以及如何展示执行结果的?一起来看一下。

前面几种表格的基本思路是——要么由表头来确定方法名(决策表);要么固定方法名(动态决策表、查询表);要么结合某些标识符确定方法名(脚本表)。总之给人有迹可循的印象,而Table表要换个思路——没有表头,也不用纠结于那个数传给了哪个变量。唯一必须有的方法名称是List doTable(List<List<String>>)。可以看出输入参数是一个两级List,其实就是表格内容啦。里面一级List是某一行中的元素,都是字符串形式传过去的;外面一级List就是多个行了。返回值其实也是一个两级List,只不过简写了。写成这样就更精确了——List<List<String>>
doTable(List<List<String>> table)。返回的List的结构也是一样的,各个行、行中的各个元素。元素也是字符串形式,内容如下:

pass——表示通过

pass:<message>——通过且带信息

...不一一列举了,参考文档的说明

可以看出,在这个方法里我们要全面负责输入和输出,针对输入List中的内容做出判断和处理,再写到一个输出List里。这也意味着fixture相对灵活与复杂。

结果展示是这样的:把这个返回的“表格”(二级列表)中的元素和原始“表格”进行“逐格叠加”。当输出字符是pass,就把输入表的这个“格”变绿显示,如果是pass:message,就变绿且附加message显示,如果是fail,就变红显示,如果是空字符串,就黑色原始值显示,如果是没有标记的普通字符串,就替换原来的内容并且红色......

如果返回“表格”的大小、长短和输入表格不同,那么“叠加”会发生什么。fitnesse已经考虑到了这点——如果结果短了,后面就不管了,原样显示;如果结果长了,就附加显示出来

综上所述,Table表是一种最灵活的表示。但我个人相当不建议使用这种,除非从之前介绍的表格中找不到合适的。原因是这种代码写起来会比较复杂且通用性极差。我对复杂的东西有天然的抵触心理。有人说程序员分两种,一种是把简单的事情考虑的很复杂,一种是把复杂的事情考虑的尽量简单。毫无疑问我是后面这种。我所有的文章都是在尽量用最简单的方法来阐述事情。

时间: 2024-10-18 08:25:04

Fitnesse系列六的相关文章

C语言快速入门系列(六)

C语言快速入门系列(五) C语言指针加强 本节引言: 上一节我们对C语言中的指针进行了初步的了解,学习了指针的定义,与普通变量 一维数组,二维数组,字符串之间的使用!在本节中我们将会学习一些新的知识点, 函数,结构体与共用体,枚举类型以及类型定义符typedef! 本节学习路线图: 本节正文 函数 ps:空函数就是什么都不做的函数,开发过程中不需要马上实现的,先写空函数!简单的空函数:void abc(){   } 结构体 共用体: 代码示例2: 建立一个共用体类型,当输入的时学生类型时,要求输

【C++自我精讲】基础系列六 PIMPL模式

0 前言 很实用的一种基础模式. 1 PIMPL解释 PIMPL(Private Implementation 或 Pointer to Implementation)是通过一个私有的成员指针,将指针所指向的类的内部实现数据进行隐藏. 2 PIMPL优点 举例: //x.h class X { public: void Fun(); private: int i; //add int i; }; //c.h #include <x.h> class C { public: void Fun()

iOS流布局UICollectionView系列六——将布局从平面应用到空间

iOS流布局UICollectionView系列六--将布局从平面应用到空间 一.引言 前面,我们将布局由线性的瀑布流布局扩展到了圆环布局,这使我们使用UICollectionView的布局思路大大迈进了一步,这次,我们玩的更加炫一些,想办法将布局应用的空间,你是否还记得,在管理布局的item的具体属性的类UICollectionViewLayoutAttributrs类中,有transform3D这个属性,通过这个属性的设置,我们真的可以在空间的坐标系中进行布局设计.iOS系统的控件中,也并非

Netty4.x中文教程系列(六) 从头开始Bootstrap

Netty4.x中文教程系列(六) 从头开始Bootstrap 其实自从中文教程系列(五)一直不知道自己到底想些什么.加上忙着工作上出现了一些问题.本来想就这么放弃维护了.没想到有朋友和我说百度搜索推荐了我的文章.瞬间有点小激动啊.决定自己要把这个教程系列完善下去.这里诚挚的想支持我的盆友们道歉.真的是让你们失望了.我居然有想放弃的这种丧心病狂的念头.以后绝对不会了. 其实伴随着对Netty的逐步深入学习.感觉自己对netty的了解仍然有所欠缺.加上笔者语文课是美术老师教的.所以..说多了都是泪

Cocos2d-x 系列六之数据操作

一.定时器  在cocos2d-x中, 类似定时器的操作,不需要额外的写Timer,实际上,在Node元素中,已经添加了定时执行的功能: 先来看看在Node中的定义 // ... bool Node::isScheduled(SEL_SCHEDULE selector) { return _scheduler->isScheduled(selector, this); } void Node::scheduleUpdate() { scheduleUpdateWithPriority(0); }

SNIFF(原始套接字系列六)

大家知道,以太网采用广播机制,所有与网络连接的工作站都可以看到网络上传递的数据.通过查看包含在帧中的目标地址,确定是否进行接收或放弃.如果证明数据确实是发给自己的,工作站将会接收数据并传递给高层协议进行处理.但是,如果让网卡置于混杂模式(Promiscuous mode),则网卡不会鉴别帧的MAC地址,而是一律接收. 上图给出了以太网的帧格式,网卡是通过图中的MAC地址进行ID标识的.传说中的网络嗅探(sniffer)就是指让网卡进入混杂模式从而接收正在局域网总线上发送的所有报文.为什么能够嗅探

智能路由器-OpenWRT 系列六 (远程迅雷离线下载)

OpenWRT 系列教程 智能路由器-OpenWRT 系列一 (OpenWRT 刷机) 智能路由器-OpenWRT 系列二 (OpenWRT初始配置) 智能路由器-OpenWRT 系列三 (OpenWRT安装LuCI&网络配置) 智能路由器-OpenWRT 系列四 (挂载移动设备) 智能路由器-OpenWRT 系列五 (NAS-SMB家庭共享) 智能路由器-OpenWRT 系列六 (远程迅雷离线下载) 下载 Xware1.0.31,参考地址 http://luyou.xunlei.com/thr

SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性

原文:SQL Server 2008空间数据应用系列六:基于SQLCRL的空间数据可编程性 友情提示,您阅读本篇博文的先决条件如下: 1.本文示例基于Microsoft SQL Server 2008 R2调测. 2.具备 Transact-SQL 编程经验和使用 SQL Server Management Studio 的经验. 3.具有使用 Microsoft Visual Studio 进行 Microsoft .NET Framework开发的经验. 4.熟悉或了解Microsoft S

Maven 系列 六 :将项目发布到私服

1 . 修改私服中仓库的部署策略 Release版本的项目应该发布到Releases仓库中,对应的,Snapshot版本应该发布到Snapshots仓库中.Maven根据pom.xml文件中版本号<version>节点的属性是否包含-SNAPSHOT,来判断该项目是否是snapshot版本.如果是snapshot版本,在执行mvn deploy部署命令时,maven会自动将项目发布到Snapshots仓库.要发布项目,首先需要将Releases仓库和Snapshots仓库的“Deploymen