我有一个集成测试套件。我有一个 IntegrationTestBase
类,可以扩展我所有的测试。此基类具有用于建立 API 和 DB 连接的 @Before
(public void setUp()
)和 @After
(public void tearDown()
)方法。我所做的只是在每个测试用例中重写这两个方法,并调用 super.setUp()
和 super.tearDown()
。然而,如果有人忘记调用 super 或将其放在错误的位置,并且抛出异常,而且他们忘记在 finally 或其他内容中调用 super,那么这可能会导致问题。
我想做的是在基类 final
上创建 setUp
和 tearDown
方法,然后添加我们自己的带注释的 @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?* }
}