java Cucumber类扩展步骤定义和挂钩
我想从java中的“AbstractBase\u步骤”类进行扩展。所以我想要一个钩子,像:
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: You're not allowed to extend classes that define Step Definitions or hooks. class Hello_Steps extends class AbstractBase_Steps
有人有这样的把戏吗
编辑:为了重用相同的步骤定义,我创建了一个新类Common_Steps,并将其包含在粘合路径中。因此,其定义可用于测试中的所有要素文件
# 1 楼答案
您可以在stepdefinition中定义@Before步骤,然后在基类中添加方法
我的设想是在每个步骤后在报告中打印消息,以减少复杂性这是解决方案
步骤定义:
基类方法:
# 2 楼答案
唯一的问题是cucumber注释使用AOP并创建代理类,因此只需在具体实现中移动
@Before
和@After
# 3 楼答案
我理解您的问题,您希望减少步骤的逻辑。这是解决办法
1)在本例中定义一个公共类
A
,其步骤在一般包中,如co.com.test
2)定义使用基本包的步骤配置
3)不使用特定步骤从类B继承到类A
这将导致在所有包中搜索步骤,并找到常见步骤和特定步骤