Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get @CucumberOptions tag property using System.getProperty()

I am running a maven project in Eclipse for my Cucumber tests. My test runner class looks like this:

@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 {   
}

Instead of having to hard code the tags into the test runner, I am keen to pass them in using the .command file. (i.e. using System.getProperty("cucumber.tag")

However, I get an error when I add the line of code to the above test runner:

@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 {   
}

The error I get is: "The value for annotation attribute CucumberOptions.tags must be a constant expression".

So seems it only wants constants rather than a parameterised value. Anyone know a clever way round this?

like image 203
Charlie Seligman Avatar asked Jun 02 '15 10:06

Charlie Seligman


People also ask

What is the use of system getProperty in Java?

The getProperty(String key) method in Java is used to returns the system property denoted by the specified key passed as its argument.It is a method of the java. lang. System Class. where key is the name of the System property.

How do I pass cucumber tags from the command line?

This how you do it: mvn test -Dcucumber. options="--plugin junit:target/cucumber-reports/report. xml". Please look at our Cucumber Report to see what all reports you can generate using @CucumberOptions.


1 Answers

You can use the cucumber.options environmental variable to specify the tags at runtime

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

This supercedes the tags already contained in the test code.

like image 94
Reimeus Avatar answered Sep 28 '22 23:09

Reimeus