Ich habe eine Integration Test Suite. Ich habe eine IntegrationTestBase
Klasse für alle meine Tests zu erweitern. Diese Basisklasse verfügt über die Methoden @Before
( public void setUp()
) und @After
( public void tearDown()
) zum Herstellen von API- und DB-Verbindungen. Was ich habe tut zwingende nur diese beiden Methoden in jedem Testfall und ruft super.setUp()
und super.tearDown()
. Dies kann jedoch zu Problemen führen, wenn jemand vergisst, den Super anzurufen, oder ihn an die falsche Stelle setzt und eine Ausnahme ausgelöst wird und er vergisst, den Super im Endlich oder so anzurufen.
Was ich tun möchte, ist, die Methoden setUp
und tearDown
in der Basisklasse zu erstellen final
und dann einfach unsere eigenen Anmerkungen @Before
und @After
Methoden hinzuzufügen . Bei einigen ersten Tests scheint es immer in dieser Reihenfolge aufzurufen:
Base @Before
Test @Before
Test
Test @After
Base @After
aber ich bin nur ein wenig besorgt, dass die Bestellung nicht garantiert ist und dass es Probleme verursachen könnte. Ich habe mich umgesehen und nichts zu diesem Thema gesehen. Weiß jemand, ob ich das kann und keine Probleme habe?
Code:
public class IntegrationTestBase {
@Before
public final void setUp() { *always called 1st?* }
@After
public final void tearDown() { *always called last?* }
}
public class MyTest extends IntegrationTestBase {
@Before
public final void before() { *always called 2nd?* }
@Test
public void test() { *always called 3rd?* }
@After
public final void after() { *always called 4th?* }
}
MyTest
fehlt einextends
?