我有一个集成测试套件。我有一个IntegrationTestBase
类可以扩展我的所有测试。这个基类有一个@Before
( public void setUp()
) 和@After
( public void tearDown()
) 方法来建立 API 和 DB 连接。我一直在做的只是在每个测试用例中覆盖这两个方法并调用super.setUp()
and super.tearDown()
。但是,如果有人忘记调用 super 或将它们放在错误的位置并且抛出异常并且他们忘记在 finally 中调用 super 或其他东西,这可能会导致问题。
我想要做的是在基类上创建setUp
and方法,然后添加我们自己的注释和方法。做一些初始测试,它似乎总是按以下顺序调用: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?* }
}