[英]Cucumber: You're not allowed to extend classes that define step definitions or hooks
[英]Cucumber class extending step definitions and hooks
我想從 Java 中的“AbstractBase_step”類擴展。 所以我想要一個像這樣的鈎子:
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 {
}
當我這樣做時,我得到
黃瓜.runtime.CucumberException:你不能擴展定義步驟定義或鈎子的類。 類 Hello_Steps 擴展類 AbstractBase_Steps
有人對此有訣竅嗎?
編輯:為了重用相同的步驟定義,我創建了一個新類 Common_Steps 並將其包含在膠水路徑中。 因此它的定義可用於測試中的所有特征文件。
檢查這個討論。
希望這可以幫助。
據我了解您的問題,您想減少步驟的邏輯。 這是解決方案。
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 的特定步驟
它會導致在所有包中搜索步驟,並會找到通用步驟和具體步驟。
您可以在 stepdefinition 中定義 @Before 步驟,然后在基類中添加方法,
我的方案是在每個步驟后在黃瓜 jvm 報告中打印消息並減少復雜性,這是解決方案,
步驟定義:
@Before
public void after(Scenario scenario) {
this.scenario = scenario;
}
基類方法:
public static Scenario scenario;
public Scenario printResponse_Report(Scenario scenario, String responseStr{
scenario.write("Response body: \n" +responseStr);
return scenario;
}
唯一的問題是使用 AOP 並創建代理類的黃瓜注釋,因此只需在具體實現中移動@Before
和@After
public class BaseStepDefinition {
protected void init(){
PageFactory.initElements(..);
}
}
public class MyStepDefinition extends BaseStepDefinition {
@Before
@Override
public void init() {
super.init();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.