簡體   English   中英

在 Cucumber-BDD Java 中,如何一次找出所有 CLASHING 步驟定義? (不在功能文件中使用它們)

[英]In Cucumber-BDD Java, How to find out all CLASHING Step Definitions at once ? (without using them in a feature file)

下面的 X、Y 和 Z 是 3 個不同的 Java 包,其中包含 Cucumber BDD 步驟定義。

@CucumberOptions(
    features = "classpath:features_for_XYZ",
    glue = {"X", "Y", "Z"},

由於 X、Y 和 Z 是由不同團隊開發的,因此存在 Step Def 沖突的可能性(即特征文件中的一個步驟可能與多個 Step Definition Java 函數匹配)。 目前只有當該步驟實際用於特征文件時才會檢測到這種沖突。

“cucumber.runtime.AmbiguousStepDefinitionsException: ✽.And 以下 MN 事情發生 (a/c/d.feature:80) 匹配不止一個步驟定義:”

在特征文件中使用它們之前,有沒有辦法識別所有沖突步驟定義?

對於每個步驟定義,用與正則表達式匹配的文本替換正則表達式,然后查看它是否與任何其他步驟定義匹配。 您需要自己編寫一個框架來執行此操作,因為在 Cucumber 中沒有簡單的方法(並且您需要小心,例如在另一個步驟將選擇一個數字的地方編寫文本;需要完成檢查兩種方式,我不認為替換可以自動化到徹底)。

唯一的其他方法是通過檢查。

不過,我不確定你為什么要這樣做。 我們在 BDD 中使用“應該”這個詞的部分原因是因為系統“應該”做的事情會隨着時間的推移而改變,“應該”比“必須”或“將”鼓勵更多的質疑。 這意味着功能文件將發生變化,並且需要對其進行維護。 如果某個步驟時,它使用一個以上的步驟定義相匹配,它應該是足夠的,在它的發現時間來改變它。

我很好奇你所面臨的情況意味着它不是。

您可以通過根據場景描述的功能和上下文分離特征文件和步驟定義,並僅包含與相關上下文匹配的步驟來最小化這些沖突。

暫無
暫無

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

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