我的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()?
答案 0 :(得分:0)
不,它不应该同时运行两种设置方法,如果你已经扩展了父类并遵循了overriding方法的所有规则,那么你的父类方法就不会被执行了。请考虑以下情形。我有两个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,然后执行子类的测试方法
答案 1 :(得分:0)
参考这个答案:https://stackoverflow.com/a/3456599
我最后在SubClass中添加了一个调用SuperClass的setUp
的方法 //SubClass extends SuperClass
protected void getSuperSuper((ITestContext context) {
super.setUp(context);
}
//ChildClass extends SubClass
protected void setUp(ITestContext context) {
super.getSuperSuper(context);
...
}