ฉันมีชุดทดสอบการผสานรวม ฉันมีIntegrationTestBaseชั้นเรียนสำหรับการทดสอบทั้งหมดของฉันที่จะขยาย คลาสฐานนี้มีเมธอด@Before( public void setUp()) และ@After( public void tearDown()) เพื่อสร้างการเชื่อมต่อ API และ DB สิ่งที่ฉันได้ทำเป็นเพียงการเอาชนะทั้งสองวิธีการในแต่ละ testcase และเรียกและ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คืออะไร?