2016-04-07 3 views
1

私はmavenを使ってビルドされたJavaプロジェクトを持っています。フィーチャーファイルの場所に基づいてキュウリのJavaでダイナミックグルーを作成するには?

私は、さまざまな機能に基づいて複数のパッケージ、機能ファイルを持っています。プロジェクトのテスト構造は以下の通りです。私は一つだけRunCukesTest.javaが、この場合

@RunWith(Cucumber.class) 
@CucumberOptions(format = { "html:target/cucumber-html-report", 
         "json:target/cucumber-json-report.json" }, 
         features = "src/test/resources/", 
         glue = "??????", 
         tags = {"[email protected]"} 
      ) 
public class RunCukesTest { 

} 

を提出してい

src 
    ->test 
    ->java 
     ->com 
     ->usercreation 
      TestStepDef.java 
     ->uservalidation 
      TestStepDef.java 
    ->resources 
     ->usercreation 
      usercreation.feature 
     ->uservaliation 
      uservalidatin.feature 

それはすべて私の機能ファイルを実行します。しかし、それは私の特有のステップ定義を見つけることができません。だから私は接着剤オプションを "com.usercreation"としなければならない。しかし、私がuservalidation機能ファイルを実行しているときに、適切なステップ定義を取得することはできません。私の使用例では、step defファイルが同じパッケージにあることを望んでいません。異なる機能を持つ多くのステップがあるからです。

私は動的に機能ファイルが実行されているパッケージ名に基づいて糊オプションを与える可能性のある方法はあります。あるいは、私はこのプロジェクトへの他のアプローチを欠いています。

答えて

5
glue = { "classpath:com/usercreation", "classpath:com/uservalidation" }, 
+0

** classpath:**は、Surefireのデフォルトではsrc/test/javaです。 – MikeJRamsey56

+0

動的部分に関しては、実行するたびにglue引数を指定します。ランナー・ファイルを編集するのではなく、** - Ducucumber.options **を使用してオーバーライドすると、クラスパスに入れるステップ定義ファイルを選択できます。しかし、私はこれをお勧めしません。 [KISS](https://en.wikipedia.org/wiki/KISS_principle)を覚えておいてください。 – MikeJRamsey56

+0

私はこのアプローチを以前に試みました。しかし、このアプローチの欠点の1つは、将来的に追加されるパッケージがたくさんある場合、グルーパスのパラメータは継続していくということです。 – googytech

0

RunCukesTestをすべての手順の上のパッケージに移動します。キュウリはそのクラスパスを検索し、同じパッケージまたはサブパッケージ内のステップを見つけます。 MikeJRamsey56により示唆されるように位置を設定

は別のオプションです。

+0

デフォルトでは、Mavenのクラスパスは** src/test/java **ですので、ランナーはそこにいなければなりません。 – MikeJRamsey56

関連する問題