2017-11-30 7 views
0

環境を設定する(たとえばlocal、dev、prodなど)。一度、機能を実行する前に設定する。ベースURLを設定し、特定のテストデータファイルをロードする。以下は、私のテストで一度だけ呼び出すサンプルメソッドです。それを行う最善の方法を提案してください。Cucumber-jvm:機能を実行する前に環境を設定する

public void baseSetUp(String environment){ 
     loadTestData = loadPropertiesFile(enviroment); 
     setBaseUrl(enviroment); 
     restUtil = new RestUtil(pilotBaseUrl); 
     initialSetUp(); 
    } 

私はキュウリとjavaの初心者です。

答えて

0

最も簡単な方法は、機能ファイルを実行する前にデータを設定するために、stepDefクラスの@Beforeアノテーションフックを使用することです。

import cucumber.annotation.After; 
import cucumber.annotation.Before; 

@Before 
public void baseSetUp(String environment){ 
     loadTestData = loadPropertiesFile(enviroment); 
     setBaseUrl(enviroment); 
     restUtil = new RestUtil(pilotBaseUrl); 
     initialSetUp(); 
    } 
@Given("^I am doing step 1$") 
public void ...... ... 
.... 
.. 
. 

あなたはクラス/スイート/フィーチャー工程の前と後に複数のカスタムアクションを実行したい場合は、キュウリ、JVMでのTestNGを統合することができます。

+0

あなたの提案に感謝します。私は試してみましたが、エラーが出ます。引数型のシナリオだけがStringではないと言います。ここにエラーがあります: cucumber.runtime.CucumberException:フックが引数を宣言するとき、cucumber.api.Scenario型でなければなりません。 public void utils.CommonUtil.baseSetUp(java.lang.String) – learner

+0

** cucumber-core ** libをプロジェクトに追加する必要があります。また、メインクラスのIDEのデフォルト設定がcucumber.cli.Mainである可能性があります。これをcucumber.api.cli.Mainに変更する必要があります –

0

私はTestNGでキュウリを使用してそれを達成しました。このようにして、私はTestNGとキュウリのフックの注釈を使用することができました。 TestNGは、フィーチャーファイルを実行します。ランナークラスは以下のとおりです。

import cucumber.api.CucumberOptions; 
import cucumber.api.junit.Cucumber; 
import cucumber.api.testng.CucumberFeatureWrapper; 
import cucumber.api.testng.TestNGCucumberRunner; 
import org.junit.runner.RunWith; 
import org.testng.annotations.*; 


@RunWith(Cucumber.class) 
@CucumberOptions(
     monochrome = true, 
     features = "src/test/java/features",  
     glue = {"utils","steps"}, 
     tags = {"@test"}, 
     format = { 
       "pretty", 
       "html:target/cucumber-reports/cucumber-pretty", 
       "json:target/cucumber-reports/CucumberTestReport.json", 
       "rerun:target/cucumber-reports/rerun.txt"} 
) 
public class CucumberRunnerUtil { 

    private TestNGCucumberRunner testNGCucumberRunner; 


    @BeforeSuite 
    public void setUpEnvironment(){ 

    // your setup code e.g. environment set up etc. 

    } 

    @BeforeClass(alwaysRun = true) 
    public void setUpClass() throws Exception { 
     testNGCucumberRunner = new 
     TestNGCucumberRunner(this.getClass()); 
    } 


    @Test(groups = "cucumber", description = "Runs Cucumber Feature",dataProvider = "features") 
    public void feature(CucumberFeatureWrapper cucumberFeature) { 
     testNGCucumberRunner.runCucumber(cucumberFeature.getCucumberFeature()); 
    } 


    @DataProvider 
    public Object[][] features() { 
     return testNGCucumberRunner.provideFeatures(); 
    } 



    @AfterClass(alwaysRun = true) 
    public void tearDownClass() throws Exception { 
     testNGCucumberRunner.finish(); 
    } 


    @AfterSuite 
    public void cleanUp(){ 
     // code to clean resources. 
    } 
} 
関連する問題