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?

War es hilfreich?

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:

  1. Ich würde Eltern einrichten machen final Um versehentliche Überschreibungen zu verbieten.
  2. 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.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top