簡體   English   中英

硒:在超類中重寫setUp方法並調用super超級方法

[英]selenium: override setUp method in super class and call super super method

我的SuperTest類中有一個setUp()。 現在在ChildTest類中,我想設置另一個setUp()。 這將僅針對ChildTest運行。

所以我現在有這個

    //SuperClass
    protected void setUp(ITestContext context) {
        ...
    }

    //SubClass extends SuperClass
    @BeforeMethod
    protected void setUp(ITestContext context) {
        super.setUp(context);
        ...
    }

    //ChildClass extends SubClass
    @Override
    @BeforeMethod
    protected void setUp(ITestContext context) {
        super.setUp(context);
        ...
    }

問題是,當我運行ChildTest時,它同時運行了SubClass的兩個setUp()並擁有它自己的...如何獲得它,使其僅運行它自己的setUp()?

不,它不應該同時運行兩個設置方法,如果您已經擴展了父類並遵循了覆蓋方法的所有規則,那么您的父類方法就不會被執行。 請考慮以下情形。 我有兩個TestNG類,其中Abc是父類,Def是子類

public class Abc{

@BeforeMethod
public void beforeMethod(ITestContext context) {
    System.out.println("PARENT");
}

}

public class Def extends Abc{

@BeforeMethod
public void beforeMethod(ITestContext context) {
    System.out.println("CHILD");
}

@Test
public void test(){
    System.out.println("TEST");
}

}

現在,如果我將Def類作為TestNg Test執行,則肯定要執行子類的beforeMethod,然后執行子類的test方法

引用此答案: https : //stackoverflow.com/a/3456599

我最終在子類中添加了一個調用SuperClass的setUp的方法。

    //SubClass extends SuperClass
    protected void getSuperSuper((ITestContext context) {
        super.setUp(context);
    }

    //ChildClass extends SubClass
    protected void setUp(ITestContext context) {
        super.getSuperSuper(context);
        ...
    }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM