Tôi có một lớp cơ sở trừu tượng, lớp này tôi sử dụng làm cơ sở cho các bài kiểm tra đơn vị của mình (TestNG 5.10). Trong lớp này, tôi khởi tạo toàn bộ môi trường cho các thử nghiệm của mình, thiết lập ánh xạ cơ sở dữ liệu, v.v. Lớp trừu tượng này có một phương thức với @BeforeClass
chú thích thực hiện việc khởi tạo.
Tiếp theo, tôi mở rộng lớp đó với các lớp cụ thể trong đó tôi có @Test
các phương thức và cả @BeforeClass
các phương thức. Các phương thức này thực hiện khởi tạo môi trường dành riêng cho từng lớp (ví dụ: đưa một số bản ghi vào cơ sở dữ liệu).
Làm cách nào để thực thi một thứ tự cụ thể của các @BeforeClass
phương thức được chú thích? Tôi cần những cái từ lớp cơ sở trừu tượng được thực thi trước những cái của lớp mở rộng.
Thí dụ:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Thứ tự dự kiến:
A.doInitialization
B.doSpecificInitialization
B.doTests
Thực tế đặt hàng:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/