Fitnesse的ScriptTable只能顺序执行所有行,本博文介绍如何让ScriptTable支持if-then,来条件执行一行。

首先普及一下概念,什么是Fitnesse,听一听.NET版Cucumber的创始人Aslak Hellesøy谈Fitnesse与Cucumber对比:

FIT/Fitnesse和Cucumber都执行高级语言编写的验收测试。FIT仅识别HTML,Fitnesse则通过提供Wiki语法来简化编写测试的过程。在FIT/Fitnesse当中,所有的测试都以表格的形式呈现。

FitNesse比Cucumber的优势在于Wiki支持。

扩展Fitnesse后,ScriptTable中使用if-then的wiki文本:

!path classes
!path lib/*.jar !define TEST_SYSTEM {slim} !|Import|
|fitnesse.fixtures| |Library|
|echo fixture| | script |
| check | echo | 1 | 0<_<2 |
| ensure | echo | true |
| reject | echo | false |
| $true= | echo | true |
| $false= | echo | false |
| show | echo | $true |
| show | echo | $false | '''$t?''' 表示如果变量$t的值为true,执行本行,否则不执行
'''$f!?''' 表示如果变量$f的值为false,执行本行,否则不执行
注意:必须在第一个ScriptTable中对$t赋值,才能在第二个ScriptTable中使用$t?及$t!?
| script |
| show | echo | 112233 |
| $true? | $t1= | echo | true |
| check | echo | $t1 | true |
| $true!? | $t2= | echo | false |
| check not | echo | $t2 | false |
| $false!? | $f1= | echo | false |
| check | echo | $f1 | false |
| $false? | $f2= | echo | true |
| check not | echo | $f2 | true |

说明:

| $true? | $t1= | echo | true | 解释为:if($true) then $t1=true

| $true!? | $t2= | echo | false | 解释为:if(!$true) then $t1=false

注意问题:

不过在第一个ScriptTable中对$t赋值后,再下一个ScriptTable中才能使用$t?及$t!?,

换一种说法就是:在同一个ScriptTable中,$t赋值后,$t?不能及时获取新的赋值。

测试结果:

修改Fitnesse源文件1个:

fitnesse/src/fitnesse/testsystems/slim/tables/ScriptTable.java

具体修改代码,可以到 http://git.oschina.net/fitneesefan/FitnesseKit/commit/99240ecb915e007c11761cf29036c46465b112f2#diff-5 查看。

先简要记录一下,如果有热心的观众想知道的更详细,我很乐意进一步解释。

扩展Fitnesse的ScriptTable:支持if-then的更多相关文章

  1. OpenStack 企业私有云的若干需求(2):自动扩展(Auto-scaling) 支持

    本系列会介绍OpenStack 企业私有云的几个需求: 自动扩展(Auto-scaling)支持 多租户和租户隔离 (multi-tenancy and tenancy isolation) 混合云( ...

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

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

  3. Windows Phone中扩展WebBrowser使其支持绑定html内容

    在WP开发中,有时候会用到WebBrowser控件来展示一些html内容,这个控件有很多局限性,比如不支持绑定内容,这样的MVVM模式中就无法进行内容的绑定.为了实现这个目的,需要扩展一下,具体代码如 ...

  4. 开启CURL扩展,让服务器支持PHP curl函数(远程采集)

    关于开启Curl的方法模板天下小编在此给大家简单说一下 curl().file_get_contents().snoopy.class.php这三个远程页面抓取或采集中用到的工具,默迹还是侵向于用sn ...

  5. wecenter—开启CURL扩展,让服务器支持PHP curl函数(远程采集)

    curl().file_get_contents().snoopy.class.php这三个远程页面抓取或采集中用到的工具, 默迹还是侵向于用snoopy.class.php,因为他效率比较高且不需要 ...

  6. 简易扩展Visual Studio UnitTesting支持TestMethodCase

    NUnit的TestCaseAttribute可以简化大量的测试参数输入用例的编写,如果基于Visual Studio Unit Test Project开发则默认没有类似的功能,看一段对比代码: p ...

  7. 当当网开源Dubbox,扩展Dubbo服务框架支持REST风格远程调用

    当当网近日开源了Dubbox项目,可为Dubbo服务框架提供多项扩展功能,包括REST风格远程调用.Kryo/FST序列化等等. 当当网架构部和技术委员会架构师沈理向InfoQ中文站介绍了Dubbox ...

  8. 在PHP中开启CURL扩展,使其支持curl()函数

    在用PHP开发CMS的时候,要用到PHP的curl函数,默认状态下,这个函数需要开启CURL扩展,有主机使用权的,可通过PHP.ini文件开启本扩展,方法如下: 1.打开php.ini,定位到;ext ...

  9. ASP.NET MVC扩展自定义视图引擎支持多模板&动态换肤skins机制

    ASP.NET mvc的razor视图引擎是一个非常好的.NET MVC框架内置的视图引擎.一般情况我们使用.NET MVC框架为我们提供的这个Razor视图引擎就足够了.但是有时我们想在我们的项目支 ...

随机推荐

  1. Mac 如果一定要写个锁屏程序的话就这样

    package test; import java.io.BufferedReader; import java.io.File; import java.io.IOException; import ...

  2. 乳草的入侵//BFS

    P1030 乳草的入侵 时间: 1000ms / 空间: 131072KiB / Java类名: Main 背景 USACO OCT09 6TH 描述 Farmer John一直努力让他的草地充满鲜美 ...

  3. Java学习笔记之:Java 接口

    一.引言 接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明.一个类通过继承接口的方式,从而来继承接口的抽象方法. 接口并不是类 ...

  4. C# 任意类型数据转JSON格式(转)

    HOT SUMMER 每天都是不一样,积极的去感受生活 C# 任意类型数据转JSON格式 /// <summary> /// List转成json /// </summary> ...

  5. 字符编解码的故事–ASCII,ANSI,Unicode,Utf-8区别(转)

    很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们认为8个开关状态作为原子单位很好,于是他们把这称为”字节”. 再后来,他们又做了一些可以处理这些字节的 ...

  6. 68. Text Justification

    题目: Given an array of words and a length L, format the text such that each line has exactly L charac ...

  7. 52. N-Queens II

    题目: Follow up for N-Queens problem. Now, instead outputting board configurations, return the total n ...

  8. eclipse Juno Indigo Helios Galileo这几种版本的意思(转)

    Galileo Ganymede Europa 这些名字代表eclipse不同的版本  2001年11月7日 ,Eclipse 1.0发布   半年之后,2002年6月27日Eclipse进入了2.0 ...

  9. Objective-c CoreData

    #import "AppDelegate.h" #import "Person.h" @implementation AppDelegate @synthesi ...

  10. myeclipse快速开发配置

    1,打开MyEclipse 2013然后“window”→“Preferences” 2. 选择“java”,展开,“Editor”,选择“Content Assist”. 3. 选择“Content ...