如何在 Windows

⚡ 智能摘要

Cucumber 安装在 Windows 需要四个部分:Ruby 及其开发工具包、 Cucumber gem 本身、RubyMine 之类的编辑器以及浏览器驱动库。每项都只需几分钟即可安装完成。

  • 🔘 Ruby 优先: Cucumber 是一个 Ruby gem,因此必须先安装 RubyInstaller 中的 Ruby+Devkit 安装程序。
  • ☑️ 一条命令: 命令 gem install cucumber 直接从 RubyGems 命令行拉取 gem 及其依赖项。
  • 立即核实: 运行 cucumber --version 可以确认 gem 已解析,并且可执行文件已添加到系统 PATH 中。
  • 🧪 编辑器(可选): RubyMine 提供语法高亮和步骤导航,但任何保存纯文本的编辑器都会运行功能文件。
  • 🛠️ 浏览器驱动程序: Watir 包装 Selenium 并驱动浏览器;现代 gem 的名称是 watir,而不是已弃用的 watir-webdriver。
  • 📊 固定布局: 特征文件位于 features 目录下,步骤定义位于 features/step_definitions 目录下,或者 Cucumber 无法匹配步骤。

下载并安装 Cucumber on Windows 使用 Ruby、RubyMine 和 Watir

Cucumber 安装过程看起来可能很繁琐,但只要按正确的顺序安装各个部件,其实相对容易。以下是安装所需组件的路线图。 Cucumber 工作。

安装前提条件 Cucumber on Windows

Cucumber 它以 Ruby gem 的形式分发,因此必须安装 Ruby 才能正常工作。下载任何内容之前,请确认以下事项:

  • Windows 10 或更高版本,64 位。 除非您依赖 32 位本机 DLL 或 COM 对象,否则 RubyInstaller 不再建议使用 32 位版本。
  • 管理员权限。 安装程序会将数据写入 Program Files 目录并编辑 PATH 环境变量。
  • 互联网连接。 以下两个 gem install 命令均从 RubyGems 获取软件包。
  • 大约 1 GB 的可用磁盘空间 Ruby 加上 MSYS2 开发工具包,如果再加上 RubyMine,则需要更多。
  • 一款用于自动化的浏览器。 Watir 驱动 Chrome、Edge 或 Firefox 通过 Selenium所以至少要安装一个。

两条指令值得记住,以备后用: ruby -v 打印 Ruby 版本信息, gem -v 打印 RubyGems 版本。如果其中任何一项失败,则说明 PATH 环境变量未更新,应重新运行安装程序,而不是进行调试。

安装 Ruby 和 DevKit

首先安装 Ruby+Devkit 包,它捆绑了带有 C 扩展的 gem 所需的编译器工具链。

步骤1)前往 https://rubyinstaller.org/downloads/ 然后选择安装程序。下载页面如下所示。

RubyInstaller 下载页面列出了 Ruby 和 Ruby+Devkit 安装程序

⚠️ 版本说明: 原教程中提到的独立 DevKit 归档文件已被 MSYS2 工具链取代。 Ruby+Devkit 安装程序将软件包作为可选组件提供。RubyInstaller 目前建议新用户使用 Ruby+Devkit 4.0.X (x64) 版本,该工具包稍后会进行更新。 ridk 安装 而不是重新运行 dk.rb。以下步骤其他部分保持不变。

步骤 2)打开下载的文件。在第一个屏幕上:

  1. 接受许可
  2. 单击“下一步”按钮

Ruby 安装程序许可协议屏幕,带有“下一步”按钮

步骤 3)在下一个屏幕上:

  1. 选择您的安装目录
  2. 选择所有选项
  3. 单击安装

选择 Ruby 安装目录并选择所有安装程序选项

步骤 4)在接下来的屏幕上,单击“下一步”。

在复制开始之前,Ruby 安装程序组件选择屏幕

步骤 5)等待安装完成。

Ruby 安装进度,同时文件正在复制到磁盘

步骤 6)点击完成。

最终的 Ruby 安装程序屏幕,带有“完成”按钮。

步骤 7)安装完成后,从以下位置运行 Ruby: Windows 开始菜单。

Windows 打开命令提示符的开始菜单项,使用 Ruby 语言

步骤 8)您将看到一个类似于 Ruby 命令提示符的界面。 Windows 命令窗口。

Ruby 命令提示符窗口已准备好接收 gem 命令

安装 Cucumber

将 Ruby 添加到 PATH 环境变量后,gem 本身只需一条命令即可运行。

步骤 1)输入 gem install cucumber 在 Ruby 命令提示符中。此命令会下载并安装。 Cucumber 在命令行中直接操作。

在 Ruby 命令提示符中输入 gem install cucumber

几秒钟后 Cucumber 安装过程开始,并报告它获取的每个依赖项。

Cucumber gem 安装输出列出了正在安装的依赖项

步骤 2)验证是否 Cucumber 安装成功,请键入 cucumber 版本注意两个连字符——单个连字符不是有效的长选项。

cucumber --version 命令用于打印已安装的版本 Cucumber 版本

安装 IDE RubyMine

虽然并非必须使用编辑器,但 RubyMine 支持 Gherkin 代码,可以直接跳转到代码定义。请按照以下步骤进行安装。

RubyMine 安装向导欢迎界面

步骤 1)单击“下一步”继续 RubyMine 安装。

RubyMine 安装程序首页,带有“下一步”按钮

步骤 2)选择安装位置。

选择 RubyMine 安装文件夹

步骤 3)设置安装选项。

RubyMine 安装选项,例如快捷方式和文件关联

步骤 4)选择“开始”菜单文件夹。

选择 RubyMine 快捷方式的“开始”菜单文件夹

步骤 5)点击安装。

点击“安装”后,RubyMine 安装程序已准备就绪,可以复制文件了。

步骤 6)点击完成。

RubyMine 设置完成屏幕,带有“完成”按钮。

步骤7)选择 不要导入设置.

首次启动 RubyMine 时弹出导入设置对话框

步骤 8)点击“评估”。

RubyMine 许可证激活窗口,带有“评估”选项

步骤 9)接受许可协议。

接受 RubyMine 许可协议

步骤 10)选择“跳过剩余步骤”并设置默认值。

RubyMine初始自定义界面,包含“跳过剩余项”和“设置默认值”选项

步骤 11)打开编辑器。

RubyMine 欢迎界面,带有“打开”选项

步骤 12)创建一个新项目。

RubyMine 中的新建项目对话框

⚠️ 版本说明: RubyMine 是付费软件 JetBrains 该产品提供限时试用,点击步骤 8 中的“试用”按钮即可启动试用。另有免费替代方案。 Visual Studio Code 用 Ruby 和 Cucumber (Gherkin)扩展;本教程的其余部分在两个编辑器中操作方式相同。

安装 watir-webdriver

Cucumber 它只负责执行这些步骤。还需要其他程序打开浏览器,而这项工作属于…… Watir一个 Ruby 封装器 Selenium如果您更喜欢直接驱动浏览器,同一个项目也可以调用一个普通的浏览器。 WebDriver脚本.

步骤1)点击 使用 Ruby 启动命令提示符 并运行安装命令 gem install watir-webdriver.

在 Ruby 命令提示符中运行 gem install watir-webdriver

步骤 2)watir-webdriver gem 安装成功。

控制台输出确认已安装 watir-webdriver gem

⚠️ 弃用说明: watir-webdriver gem 被合并到主程序中 宝石 Watir 6.0 版本,其自身的存储库现在仅将用户指向替代版本。在新机器上运行 gem install watir 相反,上面这段历史命令被保留下来,因为截图显示的就是它。

Cucumber 项目文件夹结构

Cucumber 它通过约定而非配置来发现文件,因此布局比表面看起来更重要。一个最小的项目结构如下:

途径 Holds
特征/ 每个 .feature 文件都是用 Gherkin 编写的。 Cucumber 默认在此处搜索。
特征/步骤定义/ Ruby 文件中与 Given、When 和 Then 行完全匹配的代码块。
功能/支持/ 在任何步骤运行之前加载的设置代码,例如 env.rb,浏览器通常在此处打开和关闭。

两条规则可以避免日后很多混乱。 Cucumber 当关键字与某个步骤匹配时,会忽略该关键字。 假设我有一个变量 a然后我有一个变量 a 与同一定义相冲突。并且,功能文件中的步骤文本必须与步骤文件中的正则表达式完全匹配,包括标点符号。

名字 Cucumber 脚本

下面的示例将两个数字相乘,这足以证明功能文件、步骤文件和 gem 都在相互通信。

步骤 1)从以下位置打开 RubyMine 编辑器: Windows 开始菜单。

从 RubyMine 打开 Windows “开始”菜单

RubyMine 控制面板如下所示。

编辑器打开后显示的 RubyMine 控制面板

步骤 2)在 RubyMine 编辑器中创建一个新项目。

从 RubyMine 控制面板启动一个新项目

给项目命名并确定地点,然后确认。

在新项目对话框中输入项目名称和位置

步骤 3)创建文件目录。

在 RubyMine 项目中创建一个新目录

新目录出现在项目树中。

项目树显示了新创建的功能目录

步骤 4)创建并保存文件 你的文件夹/功能/ 具有名称 你的文件名.feature.

在 features 目录中创建 feature 文件

确认文件名以 .feature 为扩展名。

将新文件命名为 .feature 扩展名。

步骤 5)要执行我们的场景,请将以下命令保存到功能文件中。

已在 RubyMine 编辑器中打开功能文件,准备进行场景演示。

代码:

Feature: Multiplication 
I multiply two numbers 
	Scenario: multiply a and b 
		Given I have variable a 
		And I have variable b 
		When I multiplication a and b 
		Then I display the Result

步骤 6)现在运行第一个功能文件。

点击 使用 Ruby 启动命令提示符 从项目文件夹运行 cucumber 命令。

启动 Ruby 命令提示符以运行功能文件

控制台报告的结果如下所示。

第一个控制台输出 Cucumber 运行功能文件

步骤 7)创建功能文件的步骤定义文件。

在 RubyMine 编辑器中创建一个新文件夹。

在 RubyMine 项目中创建一个新文件夹,用于存放步骤定义。

为新的步骤定义文件夹命名

步骤 8)将文件保存到 你的文件夹/功能/步骤定义 具有名称 test_step.rb.

在步骤定义文件夹中保存一个新的 Ruby 文件

输入 test_step.rb 作为步骤定义文件名

步骤 9)将以下代码写入 step 文件。

在添加代码之前,请在编辑器中打开步骤定义文件。

代码:

Given(/^I have variable a$/) do
@a = 50
end

And(/^I have variable b$/) do
@b = 70
end

When(/^I multiplication a and b$/) do 
@mul = @a * @b
end

Then(/^I display the Result$/) do 
puts "Multiplication of #{@a} and #{@b} is #{@mul}"
end

步骤 10)现在再次运行功能文件。

步骤定义完成后,再次运行功能文件。

结果会打印在控制台中,并且每个步骤都会被报告为已通过。

Cucumber 按照定义步骤运行功能文件后的控制台输出

相当常见 Cucumber 安装错误及解决方法

这个阶段的大多数故障都来自环境,而不是来自…… Cucumber这些是值得一眼认出的。

留言 原因 固定
“cucumber”未被识别为内部或外部命令。 Ruby bin 目录不在 PATH 环境变量中,或者您正在使用纯 cmd 窗口。 可选 使用 Ruby 启动命令提示符或者重新安装 Ruby,并选中 PATH 选项。
SSL_connect 返回值=1 错误号=0 状态=错误:证书验证失败 RubyGems 无法验证证书链,通常证书链位于企业代理之后。 使用 gem update --system 更新 RubyGems,或者使用 --http-proxy 开关配置代理。
错误:构建 gem 原生扩展失败 MSYS2开发工具包缺失。 运行 ridk install 并选择 MSYS2 和 MINGW 工具链选项。
无效选项:-version 较长的选项用单个连字符表示。 输入 cucumber-version,中间用两个连字符连接。
未定义步骤,下方显示建议代码片段。 Cucumber 找到了特征文件,但没有找到匹配的定义。 将建议的代码片段粘贴到 features/step_definitions 目录下的一个文件中,并填写正文。
无法加载该文件 — watir 安装的 gem 包适用于与当前运行的 Ruby 版本不同的 Ruby 版本。 在同一提示符下检查 ruby​​ -v 和 gem list watir,然后重新安装该 gem。

一旦倍增方案报告通过,安装即完成,同一个项目可以扩展为一个完整的项目。 自动化测试 套房,无论它是否用于 功能测试 或每晚 回归测试.

常见问题

序号 CucumberJVM涵盖范围 JavaKotlin 和 Scala, Cucumber.js 涵盖 Java该脚本以及其他几种语言的移植版本均已存在。此处描述的 Ruby 版本是原始实现,所有版本都使用相同的 Gherkin 语法。

任何编辑器都可以,因为特性文件是纯文本格式。RubyMine 添加了 Gherkin 自动补全和跳转到定义功能,而 Visual Studio Code 通过 Ruby 扩展免费提供类似的功能。 Cucumber 延期。

是的,对于任何由多人运行的测试套件来说都是如此。一个明确指定了 Cucumber 版本且已提交 Gemfile.lock 的 Gemfile 文件意味着每台机器和每个 CI 代理都会解析同一个 gem,从而消除了一类“在我机器上运行正常”的故障。

不尽然。 Watir 是一种方便的包装 Selenium因此,您可以直接在步骤定义中引入 selenium-webdriver gem。 Watir 只是为 Ruby 项目提供了更简洁的元素语法。

Cucumber 对于每个未定义的步骤,程序已经打印出一段代码片段,而 AI 助手会根据周围的页面对象填充代码主体,从而扩展这一功能。请将输出结果视为初稿,因为生成的选择器经常出错。

确实如此。Copilot 可以识别“功能”、“场景”、“给定”、“何时”和“然后”,并以相同的方式建议更多场景。它最弱的地方在于无法判断哪些场景真正增加了覆盖范围,而不是重复已有的场景。

在同一分支内进行补丁升级(例如从 3.4.0 升级到 3.4.3)可以重用同一个目录并保留现有的 gem。而跨稳定分支迁移则需要一个新的目标目录,因为带有 C 扩展的 gem 在不同分支间不兼容。

三个选项可以满足大多数需求:–dry-run 检查每个步骤是否有定义,但不执行任何操作;–tags 运行带标签的场景子集;–format 设置报告器,例如本地输出美观格式,构建服务器输出 JSON 或 HTML 格式。

总结一下这篇文章: