У меня есть набор интеграционных тестов. У меня есть класс IntegrationTestBase
для расширения всех моих тестов. Этот базовый класс имеет метод @Before
( public void setUp ()
) и @After
( public void tearDown ()
) для установить соединения API и БД. Я просто переопределяю эти два метода в каждом тестовом примере и вызываю super.setUp ()
и super.tearDown ()
. Однако это может вызвать проблемы, если кто-то забудет вызвать super или поместит их в неправильное место, и возникнет исключение, и они забудут вызвать super в finally или чем-то еще.
Я хочу сделать 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?* }
}