ฉันมีชุดทดสอบการผสานรวม ฉันมี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
คืออะไร?