2017-11-30 5 views
0

Ich möchte Umgebung (z. B. lokal, dev, prod) einmal und vor dem Ausführen von Features.Es ist Basis-URL festlegen und bestimmte Test-Datendatei laden. Unten ist die Beispielmethode, die ich einmal und als erstes in meinen Tests aufrufen möchte. Bitte schlagen Sie den besten Weg vor, dies zu tun.Cucumber-jvm: Einrichten der Umgebung vor dem Ausführen von Features

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

Ich bin Neuling zu Gurken und Java.

Antwort

0

Die einfachste Möglichkeit besteht darin, @Before-Annotations-Hooks in der Klasse stepDef zum Einrichten von Daten vor dem Ausführen der Feature-Datei zu verwenden.

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 ...... ... 
.... 
.. 
. 

Sie können TestNG mit Gurken-JVM integrieren, wenn Sie mehr benutzerdefinierte Aktionen vor und nach dem Unterricht/Suite/Feature Schritt tun wollen.

+0

Vielen Dank Manmohan für Ihren Vorschlag. Ich habe es versucht, aber es gibt einen Fehler, es heißt nur Argument Typ Szenario ist nicht erlaubt String. Hier ist der Fehler: gurke.runtime.CucumberException: Wenn ein Hook ein Argument deklariert, muss er vom Typ gucluc.api.Scenario sein. public void utils.CommonUtil.baseSetUp (java.lang.String) – learner

+0

Sie müssen Ihrem Projekt ** cucumber-core ** lib hinzufügen. Überprüfen Sie auch Ihre IDE-Standardeinstellungen für Hauptklasse, wo es gurk.cli.Main sein könnte. Sie müssen dies zu gur- cur.api.cli.Main ändern –

0

Ich habe es mit Gurke mit TestNG erreicht. Auf diese Weise konnte ich sowohl Anmerkungen von TestNG als auch Gurkenhaken verwenden. TestNG führt Ihre Feature-Dateien aus. Unten ist die Runner-Klasse:

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. 
    } 
} 
Verwandte Themen