Fitnesse系列二

决策表

Fitnesse中提供了好几种表格样式,前面说了,表格是执行测试的关键。从字面看,表格描述的是测试用例;从执行角度看,表格为后端的代码(fitnesse里称作fixture)提供了包名、类名、方法名和参数(仅以java为例)。

先说测试系统,fitnesse提供了两种测试系统:fit和slim。采用不同的测试系统,表格样式不同,代码也不同。所以首先就要确定用哪种。Fit是默认的,是从Framework for Integrated Test工具延续过来的。如果不考虑旧代码延用的问题,建议还是用slim。因为slim在性能上要更好,而且代码编写更简单。

使用slim需要在页面加一行说明:!define TEST_SYSTEM {slim} ,通常放在页顶端

下面就该描述执行代码所依赖的类或jar包了。格式一般这样写:

!pathD:\software\eclipse\workspaces\MyDemo\bin\ 或

!pathD:\software\eclipse\workspaces\MyDemo\libs\*.jar(如果不指定.jar,那就去找.class文件)

在去年的版本里还需要把fitnesse自身的jar包加上:!pathD:\software\fitnesse-standalone.jar ,但是今年的版本里,我发现已经不需要这句了。

决策表这个样式的:


my demo


inputa


inputb


exp?


1


2


3


8


9


17

这个my demo就是代码的类名了,大家知道在大多数编程语言里是不允许含有空格的标识符的。那么在代码里用my demo肯定是不行的。Fitnesse其实是这样做的——把每个单词首字母大写,然后连起来。所以对应于代码里的类名是MyDemo,这样一来,其实这里写成My Demo、My demo、MyDemo效果都是一样的。但写成mydemo就不行了,这只能被转换成Mydemo,我想我说明白了吧。对于类的全名(含包名),那就只能老老实实按正常写法了,比如:com.calis.zjc.MyDemo,不能有空格,否则再自动转成首字母大写就不对了。

下一行就是方法名了。Fitnesse是这样做的——凡不是以?结尾的,都认为是输入方法,无返回值,方法名是set+首字母大写字符串,也就是说,上面表格对应的方法名分别是:void setInputa(...)  、void setInputb(...);而以?结尾的列,则认为是验证方法,无参数有返回值。对应方法名是int exp()。何以见得返回值类型就是int呢,其实是不限定的。不论返回什么类型都可以和页面上的字符做比较,这点比较智能(我没有看到源代码,但我估计是拿到返回值再统统.toString(),之后和页面上的字符串做equals的)

综上所述:上面表格对应的代码为:

public class MyDemo {
	private int a,b;
	public void setInputa(int a){
		this.a=a;
	}
	public void setInputb(int b){
		this.b=b;
	}
	public int exp(){
		return a+b;
	}
}

当我们把此页面属性设置为test时,点击那个test按钮,系统就会去查找并加载这个类,然后运行相应的方法,也即:第一步setInputa(int a),a为1;第二步setInputb(int b),b为2;第三步exp取得返回值3和表格中的3做比较,一致,这行就是绿色的,不一致就是红色的;然后再做第二行......,这样就完成了两个测试用例的执行。(如果表格里填的不是整数,那么执行赋值方法会抛异常,这点也要注意)

再说一句,执行页面并非只能写表格。完全可以写其他文字,不影响执行结果。所以我们完全可以写一段需求说明,跟着一个表格做验证;再写一段使用说明,再跟写一个表格;描述一个缺陷,再跟一个表格......这样,这个页面就成了既是文档,又是可执行用例了。总之,让“文字”得以验证,是这个工具的亮点。

时间: 2024-11-05 23:19:44

Fitnesse系列二的相关文章

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

highcharts 结合phantomjs纯后台生成图片系列二之php2

上篇文章中介绍了phantomjs的使用场景,方法. 本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片.包含一步步详细的php代码 一.highcharts 结合phantomjs纯后台生成图片系列的准备: 下载phantomjs解析插件,从highcharts官方下载所需插件. 新建一个工程文件夹phantomjs,所必备的js文件有: highcharts 结合phantomjs纯后台生成图片系列二之php 其中jquery.js为 v1.7.1; hi

iOS开发UINavigation系列二——UINavigationItem

iOS开发UINavigation系列二--UINavigationItem 一.引言 UINavigationItem是导航栏上用于管理导航项的类,在上一篇博客中,我们知道导航栏是通过push与pop的堆栈操作来对item进行管理的,同样,每一个Item自身也有许多属性可供我们进行自定制.这篇博客,主要讨论UINavigationItem的使用方法. UINavigationBar:http://my.oschina.net/u/2340880/blog/527706. 二.来说说UINavi

windows下mongodb基础玩法系列二CURD操作(创建、更新、读取和删除)

windows下mongodb基础玩法系列 windows下mongodb基础玩法系列一介绍与安装 windows下mongodb基础玩法系列二CURD操作(创建.更新.读取和删除) 简单说几句 在mongodb中3元素:db(数据库).collection(集合).document(文档) 其中collection类似于数据库中的表,document类似于行,这样一来我们就将内容对比起来记忆学习了. 数据格式 MongoDB documents是BSON格式(一种类json的一种二进制形式的存

原始套接字基础(原始套接字系列二)

在进入Raw Socket多种强大的应用之前,我们先讲解怎样建立一个Raw Socket及怎样用建立的Raw Socket发送和接收IP包. 建立Raw Socket 在Windows平台上,为了使用Raw Socket,需先初始化WINSOCK: // 启动 WinsockWSAData wsaData;if (WSAStartup(MAKEWORD(2, 1), &wsaData) != 0){ cerr << "Failed to find Winsock 2.1 or

C# 玩转计算机系列(二)-操作IIS服务

之前由于工作需要自己做一个一键部署的小工具,实现三个模块的功能:TFS操作创建映射并获取最新源代码:SQL Server数据库注册表配置数据库连接:IIS站点部署,生成可访问的IIS站点.由于是基于自己的工作环境下的开发,所以在TFS和SQL Server配置工具化实现,有一些点是默认按照公司的环境配置参数默认的,虽然不是广泛适用每一种情况的环境部署,但是在学习这三个模块的开发过程中,还是有很多东西是可以值得分享的. 今天先分享一下,如何通过工具化实现IIS站点部署和配置,为了可复用性,IIS操

Exchange Server 2013系列二:服务器角色

杜飞 在上一篇文章中,我们提到现在硬件性能的增加以及成本的下降,硬件已经不再成为软件应用的约束因素,特别是CPU,其 计算能力的成本显著降低.Exchange 2013 的主要设计目标是简化缩放.提高硬件利用率和实现故障隔离.Exchange 2013一开始将服务器角色的数目减少到了两个:客户端访问服务器角色和邮箱服务器角色,当然,升级到SP1之后也包含边缘服务器角色或者是边界网络中安装 Exchange 2007 或 Exchange 2010 边缘传输服务器角色.如下图所示: 客户端访问服务

highcharts 结合phantomjs纯后台生成图片系列二之php

上篇文章中介绍了phantomjs的使用场景,方法.本篇文章详细介绍使用php,highcharts 结合phantomjs纯后台生成图片. 一.准备: 下载phantomjs解析插件,从 highcharts官方 下载所需插件. 新建一个工程文件夹名位:phantomjs,所必备的js文件有: 其中jquery.js为v1.7.1; highcharts-convert.js的下载地址可去 github上下载 . highcharts官方文档有关于highcharts-convert.js的使

Apache Kafka系列(二) 命令行工具(CLI)

Apache Kafka系列(一) 起步 Apache Kafka系列(二) 命令行工具(CLI) Apache Kafka命令行工具(Command Line Interface,CLI),下文简称CLI. 1. 启动Kafka 启动Kafka需要两步: 1.1. 启动ZooKeeper [[email protected] kafka_2.12-0.11.0.0]# bin/zookeeper-server-start.sh config/zookeeper.properties 1.2.