写点什么

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

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

关注

评论

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

游戏开发常遇到数据一致性BUG,怎么解?

华为云开发者联盟

数据库 后端 游戏开发

SpringMVC(一、快速入门)

开源 springmvc 8月月更

设计一个跨平台的即时通讯系统(采用华为云ECS服务器作为服务端 )【华为云至简致远】

IT资讯搬运工

云服务器ECS

开源一夏 | 自己画一块ESP32-C3 的开发板(PCB到手)

矜辰所致

开源 硬件设计 8月月更 ESP32-C3

优雅地实时检测和更新 Web 应用

领创集团Advance Intelligence Group

Web Web应用

直播卖货APP——为何能得到商家和用户的喜欢?

开源直播系统源码

软件开发 语聊房 直播系统 直播源码

电商秒杀系统架构设计

泋清

#架构训练营

C++面向对象友元,全局函数、类、成员函数做友元

CtrlX

8月月更

Arco Vue + Flask 手把手实战开发一测试需求平台

MegaQi

测试平台开发教程 签约计划第三季 8月月更

【Redis】位图以及位图的使用场景(统计在线人数和用户在线状态)

石臻臻的杂货铺

redis' 8月月更

华为云弹性云服务器ECS使用【华为云至简致远】

IT资讯搬运工

弹性云服务器ECS

leetcode 155. Min Stack最小栈(中等)

okokabcd

LeetCode 数据结构与算法 栈和队列

IT故障快速解决就用行云管家!快速安全!

行云管家

运维 IT运维 行云管家

客户案例 | 提高银行信用卡客户贡献率

易观分析

金融 银行 分析 客户

手把手教你设计一个全局异常处理器

了不起的程序猿

java程序员 异常处理 java 编程 spring-boot

再迎巅峰!阿里爆款分布式小册开源5天Github已73K

冉然学Java

架构 分布式 微服务 java; 编程、

云原生系列五:Kafka 集群数据迁移基于Kubernetes的内部

叶秋学长

kafka 开源 Kubernetes 8月月更

RT-Thread记录(三、RT-Thread 线程操作函数及线程管理与FreeRTOS的比较)

矜辰所致

RTT RT-Thread 8月月更 线程操作

海外邮件发送指南(一)

极光JIGUANG

消息推送 邮件 SendCloud

开源一夏 | 使用 JavaScript 和 CSS 做一个图片转 PDF 的转换器

海拥(haiyong.site)

JavaScript 开源 前端 8月月更

STM32的内存管理相关(内存架构,内存管理,map文件分析)

矜辰所致

内存 stm32 Flash 8月月更

Docker到底是什么,能干什么?这一篇文章全部给你解释清楚了

Java永远的神

Java Docker 程序员 面试 云原生

一名合格的程序员是如何优雅地解决线上问题的?

程序员小毕

Java 程序员 架构 程序人生 后端

跟我一起了解云耀云服务器HECS【华为云至简致远】

IT资讯搬运工

云服务器

兆骑科创创业赛事活动举办平台,投融资对接,线上直播路演

兆骑科创凤阁

看到这个应用上下线方式,不禁感叹:优雅,太优雅了!

华为云开发者联盟

云计算 开发 CCE

【Redis】redis安装与客户端redis-cli的使用(批量操作)

石臻臻的杂货铺

redis' 8月月更

国产堡垒机品牌哪家好?功能有哪些?咨询电话多少?

行云管家

运维 堡垒机 运维审计 国产堡垒机 堡垒机品牌

从零开始,如何拥有自己的博客网站【华为云至简致远】

IT资讯搬运工

linux 文件权限控制

面试官:Redis 大 key 要如何处理?

Java永远的神

Java 数据库 redis 程序员 面试

什么是低代码开发?大家都真的看好低代码开发吗?

优秀

低代码开发

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