Ruby コード内から Cucumber の機能を実行したいと考えています。
通常、cucumber
gem とともにインストールされるバイナリは、1 つ以上の機能を指定してコマンド ラインで実行されます。
ただし、動的な機能実行フローを作成するロジックを定義したいと考えています。つまり、プログラムはどの機能を実行する必要があるかを判断できます。
コマンドラインではなく、Ruby コードから指定された機能ファイルを使用して Cucumber をインスタンス化することは可能ですか?
メーリングリストといくつかの API の読み取りから、その方法を発見しました。
features="path/to/first.feature path/to/second.feature"
runtime = Cucumber::Runtime.new
runtime.load_programming_language('rb')
Cucumber::Cli::Main.new([features]).execute!(runtime)
gem のディレクトリ内のすべての機能をfeatures/
実行する場合は、代わりに空の配列を に渡しMain.new
ます。
機能とオプションを指定して、このコマンド例を変換するには、次のようにします。
cucumber features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom
Ruby コードに変換すると、Cucumber にargs
配列を渡すことになります。
require 'cucumber'
# Method 1 - hardcoded features
args = %w(features/first.feature features/second.feature -d -f Cucumber::Formatter::Custom)
# Method 2 - dynamic features
features = 'features/first.feature features/second.feature'
args = features.split.concat %w(-d -f Cucumber::Formatter::Custom)
# Run cucumber
begin
Cucumber::Cli::Main.new(args).execute!
rescue SystemExit
puts "Cucumber calls @kernel.exit(), killing your script unless you rescue"
end
Ruby 2.0.0p598 および Cucumber 1.3.17 を使用してテスト済み