मेरे पास इंटीग्रेशन टेस्ट सूट है। मेरे पास IntegrationTestBaseमेरे सभी परीक्षणों के विस्तार के लिए एक वर्ग है। इस बेस क्लास में @Before( public void setUp()) और है@Afterpublic void tearDown() एपीआई और डीबी कनेक्शन स्थापित करने के लिए ( ) विधि है। मैं जो कर रहा हूं, वह प्रत्येक टेस्टकेस और कॉलिंग में उन दो तरीकों को ओवरराइड कर रहा है 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?