ฉันมีคลาสพื้นฐานนามธรรมซึ่งฉันใช้เป็นฐานสำหรับการทดสอบหน่วยของฉัน (TestNG 5.10) ในคลาสนี้ฉันเตรียมใช้งานสภาพแวดล้อมทั้งหมดสำหรับการทดสอบการตั้งค่าการแมปฐานข้อมูล ฯลฯ คลาสนามธรรมนี้มีวิธีการที่มี@BeforeClass
คำอธิบายประกอบซึ่งจะทำการเริ่มต้น
ต่อไปฉันจะขยายคลาสนั้นด้วยคลาสเฉพาะซึ่งฉันมี@Test
วิธีการและ@BeforeClass
วิธีการ วิธีการเหล่านี้ทำการกำหนดค่าเริ่มต้นเฉพาะคลาสของสภาพแวดล้อม (เช่นใส่บันทึกบางส่วนลงในฐานข้อมูล)
ฉันจะบังคับใช้คำสั่งเฉพาะของ@BeforeClass
วิธีการที่มีคำอธิบายประกอบได้อย่างไร ฉันต้องการคนที่มาจากคลาสฐานนามธรรมเพื่อดำเนินการก่อนคลาสขยาย
ตัวอย่าง:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
คำสั่งซื้อที่คาดหวัง:
A.doInitialization
B.doSpecificInitialization
B.doTests
ลำดับจริง:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/