2012-10-16 13 views
5

私はオートメーション目的でcucumber-watir-webdriverを使用しています。私は次のディレクトリ構造を持っています:キュウリの共通ステップを維持するためのベストプラクティス

|features 
-|feature1 
--|1.feature 
--|step_definitions 
---|1.rb 
-feature2 
--|2.feature 
--|step_definitions 
---|2.rb 

などです。 1.rb2.rbで冗長性を減らすためのベストプラクティスを知る必要があります。 feature1feature2は全く異なるので、両方を1つのディレクトリにまとめることはできません。 また、フィーチャー・ラインが同じであるが、ステップでの実行が異なるために、フィーチャー・ラインが同じである場合に、あいまいさが生じる部分があります。

1.rb2.rbに共通する部分があるかどうかを知る必要があります。一般的なステップ定義を保持するのがベストプラクティスです。

+0

関連コードを表示してください。 –

+0

何が必要ですか? 「データベースエントリのチェック」のように、両方の機能にありますが、チェックするデータベースは異なっています。それらを混在させたくなくて、複雑にしたくありません。しかし、「私がログインしたこと」のような手順は同じなので、私はステップ定義を組み合わせた場所に入れたいと思っています。 –

答えて

1

キュウリは、現在または次のディレクトリ内のステップの定義を検索します。 だから我々は、私は、このステップの定義は、あなたの1で

require "#{File.dirname(__FILE__)}/../../common_steps.rb" 

を追加ロードするために、今

|features 
-|feature1 
--|1.feature 
--|step_definitions 
---1.rb 
-feature2 
--|2.feature 
--|step_definitions 
---2.rb 
-|common_steps.rb <-- keep common steps in here 

としてこれに対する一つの解決策を見つけた 、2つの特徴のディレクトリ下の一般的なステップの定義ディレクトリやファイルを持つことはできません。 rbs。 また、あなたが、あなたは以下の特徴の一般的な手順を含む、すべてのそのようなディレクトリにcommon_steps.rbファイルを保つことができますし、

require "#{File.dirname(__FILE__)}/../common_steps.rb" 

with--このコードを以前common_steps.rbファイルを必要とすることができ、より長いディレクトリ構造を持つことができます。 これは、ディレクトリ構造とstep_definitionファイルをクリーンに保ちます。

2

あなたの機能を個々のディレクトリに分けても問題ありませんが、step_definitionsディレクトリにファイルをまとめてfeaturesディレクトリに保存することをお勧めします。両方の機能に共通するステップをcommon_steps.rbファイルに入れることができます(common_steps.rbの代わりにlogin_steps.rbtest_data_creation_steps.rbのようなものが良いでしょう)。あなたの質問と同じスタイルのディレクトリ構造図の中にそれを翻訳し

、私は次のことをお勧めしたい:

|features 
-|feature1 
--|1.feature 
-feature2 
--|2.feature 
-|step_definitions 
--|1.rb 
--|2.rb 
--|common_steps.rb <-- put your common steps in here 
+0

ありがとうございましたが、実行した場合にこれらのステップ定義がロードされることは疑いの余地がありません "cucumber /features/feature1/1.feature" ツリー2-3レベルの深さがあり、私のような特定の機能を実行したい場合 "cucumber /features/feature1/feature1.1/1.1.feature"はキュウリオートロード/フィーチャー/ステップ定義を意味します –

+0

はい、ロードされます。 –

+0

これは間違っており、ロードされません。あなたはCucumberに 'cucumber -r features features/feature1/1.feature'をどこに見せるかを伝える必要があります。デフォルトでは、ステップ定義とサポートコードは、指定されたフィーチャーとそのサブディレクトリーの包含ディレクトリーで検索されます。 – jbpros

関連する問題