写点什么

采访.NET 版 Cucumber 的创始人 Aslak Hellesøy

  • 2009-11-22
  • 本文字数:991 字

    阅读完需:约 3 分钟

Aslak: 先从两者的相似之处开始吧!FIT 和 Cucumber 都是命令行工具。实际上,Fitnesse 是基于 FIT 的 Wiki 工具。 测试语言

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

另一方面,Cucumber 让用户用纯文本文件且不受英语的限制来编写测试。例如:Ou Français. Eller norsk. или Русский。它支持超过 40 种语言。事实上,Cucumber 从关键字"Scenario"、“Given”、"When"或"Then"开始识别代码。

当然,Cucumber 还可以在文本中镶嵌表格,故我们可以编写混合面向行为和面向数据的测试。有趣的是,Fitnesse 现在支持在表格中使用 Scenario、Given、When 和 Then 关键字,所以我们可以通过两种方式来完成工作。这是一种良性竞争。

以下是 Cucumber 示例,.feature 文件在文本中参杂了表格:

复制代码
# language: en
Feature: Addition
  In order to avoid silly mistakes
As a math idiot
I want to be told the sum of two numbers
Scenario Outline: Add two numbers
Given I have entered <input_1> into the calculator
And I have entered <input_2> into the calculator
When I press <button>
Then the result should be <output> on the screen
Examples:
| input_1 | input_2 | button | output |
| 20 | 30 | add | 50 |
| 2 | 5 | add | 7 |
| 0 | 40 | add | 40 |<b><br></br></b>

编程语言

Fit 和 Cucumber 都需要“胶合”代码,它处于高级语言和测试语言之间。在 FIT,这称作固定项,在 Cucumber 中,称作步骤定义。Cucumber 可以用 C#、Java、Scala、Clojure、Groovy、Javascript、Ioke 和 Ruby 来写步骤定义,所以在这方面 Cucumber 比 FIT 用途更广。

以下是 C#编写的步骤定义,匹配上例中在计算器中输入代码的实例:

复制代码
[Given(@"^I have entered (\d+) into the calculator$")]
public void EnterNumber(double n)
{
_calculator.Push(n);
}

编辑器
FitNesse 比 Cucumber 的优势在于 Wiki 支持。Cucumber 目前还没有基于网页的编辑器,让非技术人员来编辑验收测试。虽然有一款工具叫 Lowdown,但是它不支持表格,所以它很快就落伍了。JetBrains 公司的 RubyMine 有合适的编辑器,但是它主要面向程序员。

2009-11-22 22:332420
用户头像

发布了 87 篇内容, 共 21.1 次阅读, 收获喜欢 1 次。

关注

评论

发布
暂无评论
发现更多内容

5G NR MIB详解

柒号华仔

5G 7月月更

浅入浅出mybatis(三)

ES_her0

7月月更

研发效能生态完整图谱&DevOps工具选型必看

laofo

DevOps cicd 研发效能 持续交付 工程效率

解构陌生人社交,「融云游戏房」上线

融云 RongCloud

Qt 实现 禁用快捷键

小肉球

qt 7月月更

jQuery(二)

Jason199

jquery 选择器 7月月更

模块一作业

薛敏

一文带你了解JavaScript的数据类型

是乃德也是Ned

JavaScript 7月月更

从代码角度,带你手把手调试

芒果酱

7月月更

Hibernate 元数据模型(MetaModel)提示类没有找到错误

HoneyMoose

数通网络

乌龟哥哥

7月月更

读书笔记之数据密集型应用的可扩展性

宇宙之一粟

读书笔记 设计数据密集型应用 7月月更

架构实战营模块一作业

zhihai.tu

Green Hills Software(GHS)的安装和申请License文件

不脱发的程序猿

嵌入式 MCU Green Hills Software GHS 集成开发环境

模块一作业

张立奎

Qt | 实现一个简单的可以转动的仪表盘

YOLO.

qt 7月月更

从0开始的TypeScriptの十三:infer、extends、keyof、typeof、in

空城机

typescript 7月月更

Lombok 使用在 IDEA 中进行 JUnit 测试的时候提示 variable log 错误

HoneyMoose

解读《深入理解计算机系统(CSAPP)》第9章虚拟内存

小明Java问道之路

操作系统 csapp 虚拟内存 7月月更 虚拟操作系统

架构师训练营第八期-刘新国

liu

Ceph Swift 实践运用(四)

Lansonli

云原生 Ceph 7月月更

XGRIDS三维重建服务,构建云上数字孪生世界

阿里云弹性计算

容器 3D渲染 弹性计算 GPU算力

AI简报-GAN和CGAN

AIWeker

深度学习 GAN AI简报 7月月更

JUnit 5简明教程

okokabcd

Java junit5

查找——分块查找

乔乔

7月月更

【LeetCode】行星碰撞Java题解

Albert

LeetCode 7月月更

开发前的开胃小菜之前端开发规范🍖🍖

猪痞恶霸

前端 7月月更

Qt|VS2017中编译QWT并使用

中国好公民st

qt 7月月更

【愚公系列】2022年07月 Java教学课程 03-Hello World的运行

愚公搬代码

7月月更

zookeeper-安装zookeeper与znode说明

zarmnosaj

7月月更

采用Qt设计一个即时群聊天系统软件

DS小龙哥

7月月更

采访.NET版Cucumber的创始人Aslak Hellesøy_研发效能_Jon Arild Tørresdal_InfoQ精选文章