wake-up-neo.com

Ruft die Tag-Eigenschaft @CucumberOptions mit System.getProperty () ab.

Ich führe in Eclipse ein Maven-Projekt für meine Gurkentests durch. Meine Testrunnerklasse sieht so aus:

@RunWith(Cucumber.class)
@CucumberOptions(
        tags = { "@Now" },      
//      tags = { "@Ready" },
//      tags = { "@Draft" },
        features = { "src/test/Java/com/myCompany/FaultReporting/Features" },
        glue = { "com.myCompany.myApp.StepDefinitions" }
        )
public class RunnerTest {   
}

Anstatt die Tags fest in den Test-Runner einprogrammieren zu müssen, möchte ich sie mit der .command-Datei weitergeben. (d. h. mit System.getProperty ("cucumber.tag")

Ich erhalte jedoch eine Fehlermeldung, wenn ich die Codezeile zum obigen Test-Runner hinzufüge:

@RunWith(Cucumber.class)
@CucumberOptions(
        tags = { System.getProperty("cucumber.tag") }
//      tags = { "@Now" },      
//      tags = { "@Ready" },
//      tags = { "@Draft" },
        features = { "src/test/Java/com/myCompany/FaultReporting/Features" },
        glue = { "com.myCompany.myApp.StepDefinitions" }
        )
public class RunnerTest {   
}

Die Fehlermeldung lautet: "Der Wert für das Annotation-Attribut CucumberOptions.tags muss ein konstanter Ausdruck sein.".

Es scheint also nur Konstanten statt eines parametrisierten Wertes zu wollen. Kennt jemand einen geschickten Weg, um das zu umgehen?

14

Mit der Umgebungsvariablen cucumber.options können Sie die Tags zur Laufzeit angeben

mvn -D"cucumber.options=--tags @Other,@Now" test

Dies ersetzt die Tags, die bereits im Testcode enthalten sind.

15
Reimeus

Ich mache das so: -

cucmberOption.properties

#cucumber.options=--plugin html:output/cucumber-html-report 
#src/test/resources
cucumber.options.feature =src/test/resources
cucumber.options.report.html=--plugin html:output/cucumber-html-report

Java-Klasse: CreateCucumberOptions.Java

Methode zum Laden der Eigenschaftendatei: -

private static void loadPropertiesFile(){
    InputStream input = null;
    try{
        String filename = "cucumberOptions.properties";
        input = CreateCucumberOptions.class.getClassLoader().getResourceAsStream(filename);
        if(input==null){
            LOGGER.error("Sorry, unable to find " + filename);
            return;
        }
        prop.load(input);
    }catch(IOException e){
        e.printStackTrace();
    }finally{
        if(input!=null) {
            try {
                input.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

methode zum Abrufen und Festlegen von CucumberOptions

private String createAndGetCucumberOption(){       
 StringBuilder sb = new StringBuilder();
 String featureFilesPath = 
 prop.getProperty("cucumber.options.feature");
 LOGGER.info(" featureFilesPath: " +featureFilesPath);
 String htmlOutputReport = 
  prop.getProperty("cucumber.options.report.html");
 LOGGER.info(" htmlOutputReport: " +htmlOutputReport);
 sb.append(htmlOutputReport);
 sb.append(" ");
 sb.append(featureFilesPath);
 return sb.toString();
}

private void setOptions(){
   String value = createAndGetCucumberOption();
   LOGGER.info(" Value: " +value);
   System.setProperty(KEY, value);
   }

Und Hauptmethode, um dies auszuführen: -

public static void main(String[] args) {
    CreateCucumberOptions cucumberOptions = new CreateCucumberOptions();
    JUnitCore junitRunner = new JUnitCore();
    loadPropertiesFile();
    cucumberOptions.setOptions();
    junitRunner.run(cucumberTest.runners.RunGwMLCompareTests.class);
 }

Und RunGwMLCompareTests.class ist meine Cucumber-Klasse

@

RunWith(Cucumber.class)
@CucumberOptions(
        monochrome = true,
        tags = {"@passed"},
        glue =  "cucumberTest.steps")
public class RunGwMLCompareTests {

    public RunGwMLCompareTests(){

    }
}

Im Grunde genommen erhalten Sie jetzt einen festgelegten Ausgabebericht und Feature-Ordner über Eigenschaftendateien und andere Optionen, wie die Java-Klasse für die Definition von Klebstoff. Und um die Testfälle auszuführen, führen Sie einfach Ihre Hauptklasse aus.

Grüße,

Vikram Pathania

1
Vikram Pathania