Получить @cucumberoptions свойство тега с помощью системы.метод getproperty()
Я запускаю проект maven в Eclipse для моих тестов огурцов. Мой тестовый класс runner выглядит так:
@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 {
}
вместо того, чтобы жестко кодировать теги в тестовый бегун, я очень хочу передать их с помощью .командный файл. (т. е., используя систему.getProperty ("огурец.tag")
однако я получаю ошибку, когда добавляю строку кода в вышеуказанный тестовый бегун:
@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 {
}
ошибка, которую я получаю: "Значение атрибута аннотации CucumberOptions.теги должны быть постоянным выражением".
таким образом, кажется, что он хочет только константы, а не параметризованное значение. Кто-нибудь знает, как это обойти?
2 ответов
можно использовать cucumber.options
переменная среды для указания тегов во время выполнения
mvn -D"cucumber.options=--tags @Other,@Now" test
это заменяет теги, уже содержащиеся в тестовом коде.
я делаю так:-
cucmberOption.свойства
#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: CreateCucumberOptions.java
метод загрузки файла свойств: -
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();
}
}
}
}
метод для получения и установки 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);
}
и основной метод для запуска этого: -
public static void main(String[] args) {
CreateCucumberOptions cucumberOptions = new CreateCucumberOptions();
JUnitCore junitRunner = new JUnitCore();
loadPropertiesFile();
cucumberOptions.setOptions();
junitRunner.run(cucumberTest.runners.RunGwMLCompareTests.class);
}
И RunGwMLCompareTests.класс-это мой класс огурцов
@
RunWith(Cucumber.class)
@CucumberOptions(
monochrome = true,
tags = {"@passed"},
glue = "cucumberTest.steps")
public class RunGwMLCompareTests {
public RunGwMLCompareTests(){
}
}
Итак, в основном теперь вы получаете отчет о выходе set и функцию папки через файлы свойств и другие параметры, такие как определение клея java class. И чтобы запустить тестовые случаи, просто запустите свой основной класс.
С уважением,
Викрам Pathania