此頁面描述適用於 Ruby 或 Ruby on Rails 環境的工具。

IDEs

RubyMine

RubyMine 是一個 Ruby 和 Rails IDE。

建置工具

Cucumber 可以透過多種方式執行。請注意,在相同的 Features 和步驟定義下,rake cucumbercucumber featuresautotest (搭配 ENV AUTOFEATURE=true) 不一定會產生相同的結果。

Rake

從命令列執行 rake cucumber 提供執行 Cucumber 測試的最簡單方法。

使用 Rake 需要一個具有 features 任務定義的 Rakefile。例如:

require 'rubygems'
require 'cucumber'
require 'cucumber/rake/task'

Cucumber::Rake::Task.new(:features) do |t|
  t.cucumber_opts = "--format pretty" # Any valid command line option can go here.
end

這將以 pretty formatter 執行所有 Features。

請注意,我們如何使用 cucumber_opts 存取器來定義傳遞給 Cucumber 的引數。

如果您使用 Ruby on Rails,則已為您定義此任務。

現在您可以使用 Rake 執行 Cucumber

rake features

Cucumber 隨附的 rake 指令碼會執行許多必要的背景 magic,以正確載入測試資料庫和必要的程式庫。事實上,一個重要的習慣是要在執行遷移後立即以 rake 任務執行 Cucumber。這可確保測試資料庫結構描述與開發資料庫結構描述保持同步。您可以在遷移後第一次執行 Cucumber 前執行 rake db:test:prepare 來達到相同的效果,但養成執行 rake cucumberrake cucumber:wip 的習慣可能更好。

Cucumber Rake 任務會識別 @wip 標籤,因此 rake cucumber:wip 將僅執行標記有 @wip 的情境。

例如,給定一個包含以下內容的 feature 檔案:

Feature: .  .  .

  Scenario: A

  @wip
  Scenario: B

  Scenario: C

然後執行命令 rake cucumber:wip 將僅執行情境 B 內包含的步驟,而執行 rake cucumber:ok 將執行情境 B 以外的所有情境中的步驟。

在 Rake 任務中使用設定檔

對於經常測試的複雜 Feature 執行,最好將命令列引數儲存為 Cucumber 設定檔

定義一些設定檔後,您可以在 Rake 任務中使用它們,如下所示:

require 'rubygems'
require 'cucumber'
require 'cucumber/rake/task'

namespace :features do
  Cucumber::Rake::Task.new(:non_js) do |t|
    t.profile = "webrat"
  end

  Cucumber::Rake::Task.new(:selenium) do |t|
    t.profile = "selenium"
  end
end

保護您的生產機器免受 Cucumber 影響

由於 Rake 任務用於開發和生產系統,因此在 Cucumber 任務周圍放置保護措施通常是一個好主意,這樣您的生產環境就不需要安裝 Cucumber。

以下是如何執行此操作的範例。此範例是 Cucumber 為 Rails 專案產生的 Rake 任務,但相同的概念適用於任何使用 Cucumber 和 Rake 的專案。

require 'rubygems'

begin
  require 'cucumber'
  require 'cucumber/rake/task'

  Cucumber::Rake::Task.new(:features) do |t|
    t.cucumber_opts = "--format pretty"
  end

  task features: 'db:test:prepare'
rescue LoadError
  desc 'Cucumber rake task not available'
  task :features do
    abort 'Cucumber rake task is not available. Be sure to install cucumber as a gem or plugin'
  end
end

Ruby on Rails

cucumber-rails

cucumber-rails 是一個 RubyGem,它為 Cucumber 帶來 Ruby on Rails Generator,並特別支援 Capybara 和 DatabaseCleaner。

安裝

cucumber:install generator 在您的 Rails 專案中設定 Cucumber。它會在 features/ 目錄中產生必要的文件。執行此 generator 後,您還會取得一個名為 cucumber 的新 rake 任務。

如需詳細資訊,請參閱 rails generate cucumber:install --help

使用方式

預設情況下,cucumber-rails 會在您的 Cucumber 情境之前和之後執行 DatabaseCleaner.startDatabaseCleaner.clean。此預設行為可以停用。請參閱 cucumber-rails README 取得詳細資訊。

資源

若要深入瞭解 cucumber-rails 整合和協助的工具,請參閱 DatabaseCleanerCapybara 的 README。

您可以幫助我們改進此文件。編輯此頁面