10

Ruby コード内から Cucumber の機能を実行したいと考えています。

通常、cucumbergem とともにインストールされるバイナリは、1 つ以上の機能を指定してコマンド ラインで実行されます。

ただし、動的な機能実行フローを作成するロジックを定義したいと考えています。つまり、プログラムはどの機能を実行する必要があるかを判断できます。

コマンドラインではなく、Ruby コードから指定された機能ファイルを使用して Cucumber をインスタンス化することは可能ですか?

4

2 に答える 2

11

メーリングリストといくつかの 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ます。

于 2012-12-13T17:18:02.637 に答える
3

機能とオプションを指定して、このコマンド例を変換するには、次のようにします。

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 を使用してテスト済み

于 2015-06-04T19:43:50.557 に答える