Testng, Annotation „BeforeTestMethod“ und Override
Frage
Für meine Tests verwende ich eine Basisklasse MyTestBase
Definieren einer Methode setup()
Das macht einige Grundvorbereitungen:
public class MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setup() {
// do base preparations
}
}
Jetzt habe ich einige spezifischere Testklassen, die ihre eigenen Vorbereitungen durchführen müssen. Es gibt verschiedene Möglichkeiten, dies zu implementieren.
ich könnte benutzen @Override
:
public class MySpecialTestBase extends MyTestBase {
@Override
protected void setup() {
super.setup();
// do additional preparations
}
}
... oder ich könnte eine separate Setup -Methode verwenden:
public class MySpecialTestBase extends MyTestBase {
@Configuration( beforeTestMethod=true )
protected void setupSpecial() {
// do additional preparations
}
}
Gibt es einen bevorzugten Weg, dies umzusetzen?
Lösung
Ich würde lieber benutzen @Configuration
Anmerkung. @Override
und super
sind zerbrechlicher. Sie können vergessen, anzurufen super.setup()
, oder nennen Sie es an falschem Ort. In der Zwischenzeit separate Methode mit verwenden @Configuration
Sie können bei Bedarf eine angemessenere Benennung für die Methode für untergeordnete Einrichtungen auswählen, und Sie erhalten eine Einrichtungsbestellung, die von TestNG (übergeordnetes, dann Kind) garantiert wird.
Zwei weitere Punkte:
- Ich würde Eltern einrichten machen
final
Um versehentliche Überschreibungen zu verbieten. - Ich würde benutzen
@BeforeMethod
Anmerkungen. Sie sind seit Testng 5.0 erhältlich. Natürlich für ältere Versionen, die Sie zu verwenden haben@Configuration
.