このページでは、RubyまたはRuby on Rails環境のツールについて説明します。

IDE

RubyMine

RubyMineは、RubyとRails向けのIDEです。

ビルドツール

Cucumberはいくつかの方法で実行できます。rake cucumbercucumber 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`によって統合および支援されているツールの詳細については、DatabaseCleanerCapybaraのREADMEを参照してください。

このドキュメントの改善にご協力ください。このページを編集する