Ich habe eine abstrakte Basisklasse, die ich als Basis für meine Unit-Tests verwende (TestNG 5.10). In dieser Klasse initialisiere ich die gesamte Umgebung für meine Tests, das Einrichten von Datenbankzuordnungen usw. Diese abstrakte Klasse verfügt über eine Methode mit einer @BeforeClass
Anmerkung, die die Initialisierung durchführt.
Als nächstes erweitere ich diese Klasse um bestimmte Klassen, in denen ich @Test
Methoden und auch @BeforeClass
Methoden habe. Diese Methoden führen eine klassenspezifische Initialisierung der Umgebung durch (z. B. einige Datensätze in die Datenbank einfügen).
Wie kann ich eine bestimmte Reihenfolge der mit @BeforeClass
Anmerkungen versehenen Methoden erzwingen ? Ich brauche diejenigen aus der abstrakten Basisklasse, die vor denen der erweiterten Klasse ausgeführt werden sollen.
Beispiel:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Erwartete Bestellung:
A.doInitialization
B.doSpecificInitialization
B.doTests
Aktuelle Bestellung:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/