簡體   English   中英

如何根據特征文件位置在黃瓜java中創建動態膠水?

[英]How to create dynamic glue in cucumber java based on the feature file location?

我有一個使用maven構建的java項目。

我有多個包,基於不同功能的功能文件。 項目測試結構如下。

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

我只有一個RunCukesTest.java文件

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

 }

在這種情況下,它會運行我的所有功能文件。 但它無法找到該功能的特定步驟定義。 所以我必須將膠水選項作為“com.usercreation”。 但是,如果我在運行uservalidation功能文件時這樣做,它將無法獲取適當的步驟定義。 在我的用例中,我不希望步驟def文件位於同一個包中,因為它們具有許多具有不同功能的步驟。

有沒有可能的方法,我可以根據運行功能文件的包名稱動態提供膠水選項。 或者我錯過了這個項目的任何其他方法。

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

RunCukesTest移動到所有步驟之上的包。 Cucumber將搜索其類路徑,並在同一個包或子包中找到任何步驟。

按照MikeJRamsey56的建議設置位置是另一種選擇。

雖然提供了一些很好的替代解決方案,但我沒有看到有人直接回答你的問題。

是的,可以動態更改@CucumberOptions(黃瓜注​​釋),但是由於注釋不能參數化,因此需要使用Java反射。

要查看動態修改黃瓜注釋的示例,請參閱此項目: https//github.com/workpeter/ARGOS

特別是跑步者班。 截至今天可以在這個位置找到: https//github.com/workpeter/ARGOS/blob/master/src/test/java/integrationTests/cucumber/Runner.java

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM