У мене є пакет тестів на інтеграцію. У мене є IntegrationTestBase
клас, щоб усі мої тести продовжили. Цей базовий клас має метод @Before
( public void setUp()
) та @After
( public void tearDown()
) для встановлення з'єднань API та DB. Те, що я роблю, - це просто переосмислення цих двох методів у кожній тестовій скриньці та виклику super.setUp()
та super.tearDown()
. Однак це може спричинити проблеми, якщо хтось забуде зателефонувати супер або поставить їх у неправильне місце, і буде викинуто виняток, і вони забудуть нарешті викликати супер нарешті чи щось.
Що я хочу зробити, це зробити setUp
і tearDown
методи на базовому класі, final
а потім просто додати свої примітки @Before
та @After
методи. Здійснюючи деякі початкові тести, схоже, завжди дзвонить у такому порядку:
Base @Before
Test @Before
Test
Test @After
Base @After
але я трохи стурбований тим, що замовлення не гарантується і що це може спричинити проблеми. Я озирнувся і нічого не бачив з цього приводу. Хтось знає, чи можу я це зробити і не мати проблем?
Код:
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
зниклийextends
?