統合テストスイートがあります。IntegrationTestBaseすべてのテストを拡張するためのクラスがあります。この基本クラスには、APIおよびDB接続を確立するための@Before(public void setUp())および@After(public void tearDown())メソッドがあります。私が行ってきたことは、単に各テストケースでは、これら2つのメソッドをオーバーライドして呼んでいる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?