For my tests I'm using a base class MyTestBase
defining a method setup()
that does some base preparations:
public class MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setup() {
// do base preparations
}
}
Now I have some more specific test classes that have to do their own preparations. There are different ways how to implement this.
I could use @Override
:
public class MySpecialTestBase extends MyTestBase {
@Override
protected void setup() {
super.setup();
// do additional preparations
}
}
...or I could use a separate setup method:
public class MySpecialTestBase extends MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setupSpecial() {
// do additional preparations
}
}
Is there a prefered way to implement this?
I would prefer using @Configuration
annotation. @Override
and super
are more fragile. You can forget to call super.setup()
, or call it in wrong place. Meanwhile, using separate method with @Configuration
lets you to choose more appropriate naming for child setup method if necessary, and you get setup order guaranteed by TestNG (parent then child).
Two more points:
final
in order to forbid accidental overriding. @BeforeMethod
annotations. They are available since TestNG 5.0. Of course, for older versions you forced to using @Configuration
.
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.