私は私のfeature files
インsrc/resources/com/features
と私のstep definitions
インを持っていますsrc/main/java/com/step_definitions
私のテストはすべて正しく実行されますが、intelliJは、新しいステップを作成するように依頼しても、ステップ定義がどこにあるかを確認することを拒否します。これはどこで構成されていますか?
私は私のfeature files
インsrc/resources/com/features
と私のstep definitions
インを持っていますsrc/main/java/com/step_definitions
私のテストはすべて正しく実行されますが、intelliJは、新しいステップを作成するように依頼しても、ステップ定義がどこにあるかを確認することを拒否します。これはどこで構成されていますか?
私はまったく同じ問題で髪を引き裂いていた(記録として、私のバックグラウンドはJava、Ruby、Cucumber、RubyMineですが、IntelliJとCucumber-JVMはまったく新しいです)。
Cucumber-JVMでは、 IntelliJドキュメントに記載されているように、ステップ定義がフィールドに格納されているパッケージを指定するrun configuration
必要があります。IntelliJ(少なくとも私にとっては)はデフォルト値を提供していないようです。glue
さらに詳しく説明すると、非常に基本的なプロジェクトは次のようになります。
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
└───resources
example.feature
ここでのglue
値はになりますcom.bensnape.example
。
今朝IntelliJで遊んだ後、Cucumber-JVMの規則に準拠している場合、それはglue
あなたに価値を提供するようです-つまり、機能はの下src/test/resources/<package>
にある必要があり、同様に、手順はの下にある必要がありますsrc/test/java/<package>
。
プロジェクトツリーの例:
Example
└───src
├───main
│ └───java
└───test
├───java
│ └───com
│ └───bensnape
│ └───example
│ MyStepdefs.java
│
└───resources
└───com
└───bensnape
└───example
example.feature
フォルダーを (テスト) ソース ルートとしてマークすると (フォルダーを右クリック -> ディレクトリを (テスト) ソース ルートとしてマーク)、同様に機能します。
私のgrailsプロジェクトは次のように設定されています:
test
├───cucumber
│ └───steps
│ └───support
│ └───features
└───unit
キュウリをステップ定義の 1 つとしてマークした後、ユニットはテスト ソース ルートとしてマークされました。
デフォルトの規則では、 の下に がstep definitions
定義されています。サブフォルダーの名前は重要ではありません。名前が何であれ、同じように機能します。step_definitions sub-folder
features directory
私の推測では、IDE は同じ規則に従うため、step_definitions フォルダーが features フォルダーの下に移動された場合、IntelliJ は機能を正しく実行するはずです。
は、機能を実行する前にファイルを要求するオプションをcucumber command
取ります。-r
このオプションを使用すると、通常とは異なる場所で step_definitions を探すことができます。
-r src/main/java/com/step_definitions
コマンドラインから呼び出されたときにこれらの step_definitions を表示するには、キュウリのローカル構成が必要になると思います。
Runningcucumber --verbose
は、コマンド ラインがステップ定義コードを見つけている場所を示します。