[英]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.