Saya memiliki kelas dasar abstrak, yang saya gunakan sebagai dasar untuk pengujian unit saya (TestNG 5.10). Di kelas ini, saya menginisialisasi seluruh lingkungan untuk pengujian saya, menyiapkan pemetaan database, dll. Kelas abstrak ini memiliki metode dengan @BeforeClass
anotasi yang melakukan inisialisasi.
Selanjutnya, saya memperluas kelas itu dengan kelas tertentu di mana saya memiliki @Test
metode dan juga @BeforeClass
metode. Metode ini melakukan inisialisasi lingkungan khusus kelas (misalnya, memasukkan beberapa catatan ke dalam database).
Bagaimana saya dapat menerapkan urutan tertentu dari @BeforeClass
metode beranotasi? Saya membutuhkan yang dari kelas dasar abstrak untuk dieksekusi sebelum kelas yang diperluas.
Contoh:
abstract class A {
@BeforeClass
doInitialization() {...}
}
class B extends A {
@BeforeClass
doSpecificInitialization() {...}
@Test
doTests() {...}
}
Pesanan yang diharapkan:
A.doInitialization
B.doSpecificInitialization
B.doTests
Urutan sebenarnya:
B.doSpecificInitialization // <- crashes, as the base init is missing
(A.doInitialization // <---not executed
B.doTests) // <-/