写点什么

采访.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:332519
用户头像

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

关注

评论

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

[Day33-02]-[二叉树] 恢复二叉搜索树

方勇(gopher)

LeetCode 二叉树 数据结构和算法

读《Software Engineering at Google》(17)

术子米德

架构师成长笔记

阿里巴巴Java性能调优实战

Joseph295

LeetCode 242:有效的字母异位词

武师叔

5月月更

读《Software Engineering at Google》(19)

术子米德

架构师成长笔记

读《Software Engineering at Google》(21)

术子米德

架构师成长笔记

【愚公系列】2022年05月 二十三种设计模式(二)-抽象工厂模式(Abstract Factory Pattern)

愚公搬代码

5月月更

极简Java数据结构-环形队列突破上限

芝士味的椒盐

Java 数据结构 5月月更

如何在 WordPress 中创建登录页面

海拥(haiyong.site)

WordPress 5月月更

《Linux是怎么样工作的》读书笔记

懒时小窝

Linux Linux Kenel

读《Software Engineering at Google》(20)

术子米德

架构师成长笔记

读《Software Engineering at Google》(23)

术子米德

架构师成长笔记

读《Software Engineering at Google》(18)

术子米德

架构师成长笔记

洞见科技李博:科技向实,隐私计算规模化应用吹响号角

洞见科技

金融科技 隐私计算

Apache Calcite整体架构及处理流程

不穿格子衬衫的程序员

大数据 Apache Calcite database SQL解析

ubuntu 18及以上版本配置IP的方法,你get了吗

伍工

Linux 网络

读《Software Engineering at Google》(16)

术子米德

架构师成长笔记

读《Software Engineering at Google》(22)

术子米德

架构师成长笔记

读《Software Engineering at Google》(24)

术子米德

架构师成长笔记

[Day33-03]-[二叉树] 二叉树展开为链表

方勇(gopher)

LeetCode 二叉树 数据结构和算法

TypeScript 概述

Emperor_LawD

typescript 5月月更

某年某周每一天的时间是多少

入门小站

工具

在线Excel转YAML工具

入门小站

工具

二、应用高可用设计要点

穿过生命散发芬芳

5月月更 高可用设计

Go链表与切片比较

jinjin

List 链表 slice Go 语言 切片

全链路压测(十):测试要做的准备工作

老张

性能测试 全链路压测 稳定性保障

公众号运营推广方式

源字节1号

软件开发

Nacos 源码简析之 Nacos Client 自动注册原理

道嗔

源码 nacos

Centos7升级Python2到Python3

入门小站

Linux

安装Maven到Idea配置Maven竟如此简单

芝士味的椒盐

Java maven 5月月更

Netty篇之内存管理器

邱学喆

内存管理器 netty内存管理 jemalloc管理器

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