Cucumber类扩展步骤定义和钩子

use*_*502 8 java hook extend cucumber

我想从java中的"AbstractBase_step"类扩展.所以我想要一个像这样的钩子:

public abstract class AbstractBase_Steps {
    protected Scenario scenario;
    @Before
    public void background(Scenario scenario) {
        this.scenario = scenario;
    }
}
Run Code Online (Sandbox Code Playgroud)

为每个步骤文件调用:

public abstract class Hello_Steps extends AbstractBase_Steps {
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到了

cucumber.runtime.CucumberException:不允许扩展定义步骤定义或挂钩的类.类Hello_Steps扩展了类AbstractBase_Steps

有人有诀窍吗?

编辑:为了重用相同的步骤定义,我创建了一个新的类Common_Steps并将其包含在粘合路径中.因此,它的定义可用于测试中的所有要素文件.

小智 6

查看此讨论.

希望这可以帮助.


小智 3

据我了解您的问题,您想减少步骤的逻辑。这是解决方案。

1)在本例中定义一个公共类,A其中包含通用包中的步骤,例如co.com.test

2) 定义步骤配置以使用基础包

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

3)不继承B类,具体步骤到A

这将导致在所有包中搜索步骤,并找到通用步骤和特定步骤。