5

自動化のためにcucumber-watir-webdriverを使用しています。次のディレクトリ構造があります。

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

等々。と の冗長性を減らすためのベスト プラクティスを知る必要が1.rbあり2.rbます。 feature1feature2は完全に異なるため、両方を 1 つのディレクトリに結合することはできません。また、フィーチャーラインは同じでもステップでの実行が異なる部分があるので、一緒にすると曖昧になります。

1.rb共通の部分があるかどうか、どこに配置すればよいかを知る必要があり2.rbます。共通のステップ定義を維持するためのベストプラクティスがあります。

4

2 に答える 2

2

機能を個々のディレクトリに分けても問題ありませんが、ディレクトリの下の*_step.rb1 つのディレクトリにファイルをまとめるのが最善です。両方の機能に共通するステップをファイルに入れることができます (さらに良いのは、の代わりにandのようなものです)。step_definitionsfeaturescommon_steps.rblogin_steps.rbtest_data_creation_steps.rbcommon_steps.rb

それをあなたの質問と同じスタイルのディレクトリ構造図に変換するには、次のことをお勧めします。

|features
 -|feature1
 --|1.feature
 -feature2
 --|2.feature
 -|step_definitions
 --|1.rb
 --|2.rb
 --|common_steps.rb <-- put your common steps in here
于 2012-10-16T22:46:21.563 に答える
1

Cucumberは、現在または後続のディレクトリでのみステップ定義を検索します。したがって、2つの機能ディレクトリの下に共通のステップ定義ディレクトリまたはファイルを置くことはできません。これに対する1つの解決策を次のように見つけました。

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

このステップ定義をロードするには、

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

1.rbsで。また、ディレクトリ構造を長くすることもできます。その場合、次の機能の一般的な手順を含むすべてのディレクトリにcommon_steps.rbファイルを保持でき、以前のcommon_steps.rbファイルを次のように要求できます。

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

このコード。これにより、ディレクトリ構造とstep_definitionファイルがクリーンに保たれます。

于 2012-10-18T11:46:41.437 に答える