此頁面描述適用於 Ruby 或 Ruby on Rails 環境的工具。
IDEs
RubyMine
RubyMine 是一個 Ruby 和 Rails IDE。
建置工具
Cucumber 可以透過多種方式執行。請注意,在相同的 Features 和步驟定義下,rake cucumber
、cucumber features
和 autotest
(搭配 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 cucumber
或 rake 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.start
和 DatabaseCleaner.clean
。此預設行為可以停用。請參閱 cucumber-rails README 取得詳細資訊。
資源
若要深入瞭解 cucumber-rails
整合和協助的工具,請參閱 DatabaseCleaner 和 Capybara 的 README。