我有一个集成测试套件。我有一个 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?* }
}