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