2016-01-13 3 views
6

Я хочу перейти от класса «AbstractBase_step» в java. Поэтому я хочу, чтобы иметь крюк, как:Расширение этапов определения огурцов и крючков

public abstract class AbstractBase_Steps { 
    protected Scenario scenario; 
    @Before 
    public void background(Scenario scenario) { 
     this.scenario = scenario; 
    } 
} 

, который вызывается для каждого шага файла:

public abstract class Hello_Steps extends AbstractBase_Steps { 
} 

Когда я делаю это я получаю

cucumber.runtime.CucumberException: Вы 'не разрешено расширять классы, которые определяют определения шага или крючки. класс Hello_Steps расширяет класс AbstractBase_Steps

У кого-то есть трюк для этого?

EDIT: для повторного использования определений того же шага я создал новый класс Common_Steps и включил его в путь клей. Поэтому его определения доступны для всех файлов функций в тесте.

ответ

1

Как я понимаю вашу проблему, вы хотите уменьшить логику шагов. Вот решение.

1) определить общий класс в этом случае A с шагами в общем пакете, как co.com.test

2) Определите шаги конфигурации, чтобы использовать базовый пакет

@CucumberOptions(format = {"pretty", "html:target/html/"}, 
features = {"src/test/resources/acceptance/general/general.feature"}, 
glue = {"co.com.test"}) 

3) Имеет ли не наследование от класса B с конкретными шагами до A

Это приведет к тому, что этапы будут выполняться во всех пакетах и ​​будут найдены общие шаги и конкретные шаги.