决策表

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时,点击那个testbutton,系统就会去查找并载入这个类,然后运行对应的方法,也即:第一步setInputa(int a),a为1。第二步setInputb(int b),b为2;第三步exp取得返回值3和表格中的3做比較,一致,这行就是绿色的,不一致就是红色的;然后再做第二行......,这样就完毕了两个測试用例的运行。

(假设表格里填的不是整数,那么运行赋值方法会抛异常,这点也要注意)

再说一句,运行页面并不是仅仅能写表格。全然能够写其它文字。不影响运行结果。所以我们全然能够写一段需求说明,跟着一个表格做验证;再写一段使用说明,再跟写一个表格。描写叙述一个缺陷,再跟一个表格......这样,这个页面就成了既是文档,又是可运行用例了。

总之,让“文字”得以验证。是这个工具的亮点。

Fitnesse使用系列二的更多相关文章

  1. 前端构建大法 Gulp 系列 (二):为什么选择gulp

    系列目录 前端构建大法 Gulp 系列 (一):为什么需要前端构建 前端构建大法 Gulp 系列 (二):为什么选择gulp 前端构建大法 Gulp 系列 (三):gulp的4个API 让你成为gul ...

  2. WPF入门教程系列二十三——DataGrid示例(三)

    DataGrid的选择模式 默认情况下,DataGrid 的选择模式为“全行选择”,并且可以同时选择多行(如下图所示),我们可以通过SelectionMode 和SelectionUnit 属性来修改 ...

  3. Web 开发人员和设计师必读文章推荐【系列二十九】

    <Web 前端开发精华文章推荐>2014年第8期(总第29期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  4. Web 前端开发人员和设计师必读文章推荐【系列二十八】

    <Web 前端开发精华文章推荐>2014年第7期(总第28期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  5. Web 开发精华文章集锦(jQuery、HTML5、CSS3)【系列二十七】

    <Web 前端开发精华文章推荐>2014年第6期(总第27期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  6. Web 前端开发人员和设计师必读精华文章【系列二十六】

    <Web 前端开发精华文章推荐>2014年第5期(总第26期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  7. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十三】

    <Web 前端开发精华文章推荐>2014年第2期(总第23期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML5 ...

  8. Web 前端开发精华文章推荐(HTML5、CSS3、jQuery)【系列二十二】

    <Web 前端开发精华文章推荐>2014年第一期(总第二十二期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各类能够提升网站用户体验的优秀 jQuery 插件,展示前沿的 HTML ...

  9. 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】

    <Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和  ...

随机推荐

  1. 软件下载网(包括MAC软件大全)

    http://www.ddooo.com/ MAC软件大全: http://www.ddooo.com/apple/15_5_1.htm

  2. [Oracle]TRIGGER

    题外话: Oracle 的使用. 以前客户方用的是SQL SERVER,一直在用SQL SERVER,感觉SQL SERVER的用户体验非常好. 不管是开发环境的界面布局到SQL 的写法上,感觉写起来 ...

  3. gcc configure: error: Building GCC requires GMP 4.2+, MPFR 2.3.1+ and MPC 0.8.0

    从svn checkout svn://gcc.gnu.org/svn/gcc/trunk拿了GCC的最新代码,打算编译了学东西习学习C++ 11的东西,结果在configure的时候出现例如以下问题 ...

  4. android的单元测试

    1.新建android Test project 2. 选择针对测试的项目 3.新建类继承AndroidTestCase即可: package com.howlaa.sms.test; import ...

  5. CSS中position详解与常见应用实现

    在web前台开发时候,我们必不可少的会用到postion属性进行布局定位.今天总结了一下position知识点,与常用功能与大家分享,欢迎大家交流指正. 首先我们对postion属性进行详解. 在CS ...

  6. QSplashScreen无法背景透明的解决办法

    setWindowFlags(Qt::WindowStaysOnTopHint | Qt::SplashScreen | Qt::FramelessWindowHint); setAttribute( ...

  7. jqueryui datepicker refresh

    http://stackoverflow.com/questions/6056287/jquery-ui-datepicker-prevent-refresh-onselect 给选中的TD加背景色

  8. Javascript 进阶 封装

    js中处处是对象,面向对象的第一步当然就是封装了,由于Js中没有类的概念,所以封装起来也比较麻烦,下面介绍两种js的封装. 1.使用约定优先的原则,将所有的私有变量以_开头 <script ty ...

  9. Redis核心解读:集群管理工具(Redis-sentinel)

    Redis核心解读:集群管理工具(Redis-sentinel) - Redis - TechTarget数据库 Redis核心解读:集群管理工具(Redis-sentinel)

  10. HTML5 实现拖拽

    如图 可以从第一个方框拖拽花色到第二个方框中. 也可以再拖动回来. 具体代码实现 index.html <!DOCTYPE HTML> <html> <head> ...