Mam pakiet testów integracji. Mam IntegrationTestBaseklasę na wszystkie moje testy do rozszerzenia. Ta klasa bazowa ma metody @Before( public void setUp()) i @After( public void tearDown()) do nawiązywania połączeń API i DB. To, co robiłem, to po prostu zastąpienie tych dwóch metod w każdym przypadku testowym i wywołanie super.setUp()i super.tearDown(). Może to jednak powodować problemy, jeśli ktoś zapomni zadzwonić do super lub umieści go w niewłaściwym miejscu i zostanie wyrzucony wyjątek i zapomni w końcu zadzwonić do super.
Chcę tylko utworzyć metody setUpi tearDownw klasie bazowej, finala następnie po prostu dodać własne metody @Beforei adnotacje @After. Podczas wykonywania wstępnych testów wydaje się, że zawsze wywołuje w następującej kolejności:
Base @Before
Test @Before
Test
Test @After
Base @After
ale trochę się martwię, że zamówienie nie jest gwarantowane i może powodować problemy. Rozejrzałem się i nie widziałem nic na ten temat. Czy ktoś wie, czy mogę to zrobić i nie mam żadnych problemów?
Kod:
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?* }
}
MyTestbrakujeextends?