Mam pakiet testów integracji. Mam IntegrationTestBase
klasę 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 setUp
i tearDown
w klasie bazowej, final
a następnie po prostu dodać własne metody @Before
i 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?* }
}
MyTest
brakujeextends
?