このページでは、RubyまたはRuby on Rails環境のツールについて説明します。
IDE
RubyMine
RubyMineは、RubyとRails向けのIDEです。
ビルドツール
Cucumberはいくつかの方法で実行できます。rake cucumber
、cucumber features
、およびENV AUTOFEATURE=true
を使用したautotest
は、同じフィーチャとステップ定義を使用した場合でも、必ずしも同じ結果を生成するとは限りません。
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を使用してすべてのフィーチャが実行されます。
Cucumberに渡される引数を定義するために、`cucumber_opts`アクセサーを使用する方法に注意してください。
Ruby on Railsを使用している場合、このタスクは既に定義されています。
これで、RakeでCucumberを実行できます。
rake features
Cucumber Rakeタスクは、テストデータベースと必要なライブラリを適切にロードするために必要な多くのバックグラウンド処理を実行します。実際、マイグレーションを実行した直後にCucumberを`rake`タスクとして実行する習慣を身につけることが重要です。これにより、テストデータベーススキーマが開発データベーススキーマと同期した状態に保たれます。マイグレーション後の最初のCucumber実行の前に`rake db:test:prepare`を実行しても同じ効果を得られますが、`rake cucumber`または`rake cucumber:wip`を実行する習慣を身につける方がおそらく良いでしょう。
Cucumber Rakeタスクは`@wip`タグを認識するため、`rake cucumber:wip`を実行すると、**@wip**でタグ付けされたシナリオのみが実行されます。
たとえば、次のフィーチャファイルがあるとします。
Feature: . . .
Scenario: A
@wip
Scenario: B
Scenario: C
コマンド`rake cucumber:wip`を実行すると、シナリオBに含まれるステップのみが実行され、`rake cucumber:ok`を実行すると、B以外のすべてのシナリオ内のステップが実行されます。
Rakeタスクでのプロファイルの使用
頻繁にテストされる複雑なフィーチャの実行の場合、コマンドライン引数を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は、CapybaraとDatabaseCleanerの特別なサポートを備えた、Cucumber用のRuby on Railsジェネレーターを提供するRubyGemです。
インストール
`cucumber:install`ジェネレーターは、RailsプロジェクトにCucumberをセットアップします。`features/`ディレクトリに必要なファイルを生成します。このジェネレーターを実行した後、`cucumber`という新しいrakeタスクも取得します。
詳細については、`rails generate cucumber:install --help`を参照してください。
使用方法
デフォルトでは、`cucumber-rails`はCucumberシナリオの前後に`DatabaseCleaner.start`と`DatabaseCleaner.clean`を実行します。このデフォルトの動作は無効にすることができます。cucumber-rails READMEで詳細を確認してください。
リソース
`cucumber-rails`によって統合および支援されているツールの詳細については、DatabaseCleanerとCapybaraのREADMEを参照してください。