2017-04-20 91 views
1

我是使用命令行界面的新手。所以我只是有一個關於如何使用CLI技術調用黃瓜的runner類的問題。如何從不同的主要方法調用Cucumber runner類

我有一個包含主要方法的Java程序。當測試者通過​​測試用例的參數時,它將獲取特徵文件。 java程序調用一個定製的API來獲取正確的特徵文件。

接下來,我將不得不調用Cucumber runner類來執行測試用例。我需要傳遞這個特殊的功能文件作爲參數。兩個問題,我們可以從不同的主要方法調用跑步者類。我做了一些研究,但沒有找到具體的答案。 兩個問題,

  1. cucumber.api.cli.Main.main(參數);那麼,我如何指定我的跑步者類的jar位置。

    `FeatureFileCreation.main(「xxxxx」); - 獲取正確特徵文件的API String [] arguments = {「 - 」,「」}; cucumber.api.cli.Main.main(arguments);

    • 如何指定我的罐子的位置?我怎樣才能通過我的功能文件?'
  2. 我應該在runner類中創建一個main方法,像這樣?爲了使用CLI,因爲我需要創建一個可運行的jar。我在跑步課上應該有一個主要的方法。

`

@RunWith(Cucumber.class) 
@Cucumber.Options(features="C:/Users/IBM_ADMIN/Desktop/CRAutomation/CR Regression1/src/My.feature",glue={"bell.canada.step.definition"}) 

public class AutomationRunnerAction { 

    public void main(){ 
    } 
}` 

請注意,獲得正確的功能,文件是1個的Java API。我將從一個Java程序的一個主要方法調用該API。帶有步驟定義和方法的runner類是一個diff java程序。

回答

1

試試這個如果可行。您不需要任何Runner class。只需調用Main class的靜態主要方法,該方法對應於從cli運行黃瓜。

public static void main(String[] args) throws Throwable { 

      //Your code to get feature file full path   

      Main.main(new String[]{"-g", "classpath to step definition file", "Full path to feature file"}); 

      // My stepdefinition is inside java package at cucumber.sample.test 
      // My feature file is inside src/test/resources/features/samplethree.feature 

     } 

對於像標籤或插件的其他參數使用"-t","@Tags"重要功能文件路徑必須是最後一個選項。

我使用Maven爲Eclipse設置classpath和jar依賴項。

+0

我剛剛提供了我的classpath - 這是我的java程序的src文件和完整的功能文件路徑。但是我收到的錯誤是「您可以使用下面的代碼段實現缺少的步驟:」。但是我在步驟定義文件中有相應的方法。幫助將不勝感激。同時我會檢查其他論壇的問題。只是提供更新! – Mathan

+0

'@RunWith(Cucumber.class) 公共類AutomationRunnerAction { \t公共靜態無效的main(){\t \t} }' – Mathan

+0

如果您正在使用主你不需要任何亞軍。你必須在glue選項中提供classpath。 – Grasshopper

相關問題