मैं निर्माण कर रहा हूँ इकाई परीक्षण जावा में और प्रत्येक विधि के लिए, मैं बनाने के लिए एक ही सूची में, चर, आदि. दूसरे हाथ पर, मैं निश्चित रूप से सोचा था कि मैं कर सकता बनाने के लिए इन चर के सभी के रूप में वैश्विक और सेट उनके मूल्यों में setup()
विधि (में @Before
), लेकिन मैं नहीं हूँ यकीन है कि अगर मूल्यों को बदला जा सकता है जब परीक्षण चल रहा है की वजह से करने के लिए multithreading, आदि. तो, क्या सबसे अच्छा तरीका है इस स्थिति के लिए?
के लिए कुछ भी नहीं के बारे में चिंता. JUnit जाएगा एक नया उदाहरण बनाने के अपने परीक्षण वर्ग है, और फिर चलाने के लिए प्रत्येक @Before
विधि, और उसके बाद ही चलाने @Test
विधि है, और यह करता है कि गीत और नृत्य दिनचर्या सब फिर से के लिए हर @Test
एनोटेट विधि में है कि वर्ग. आप उपयोग कर रहे हैं @Before
वास्तव में, के रूप में यह इरादा था: यह भंडारण के लिए प्रारंभिक कोड के लिए आवश्यक है कि सभी परीक्षणों में परीक्षण है कि वर्ग है.
JUnit करता है यह इस तरह है क्योंकि 'टेस्ट' स्वतंत्रता के लिए अच्छा है: परीक्षण, अधिमानतः, असफल हो या पास स्वतंत्र के लिए आदेश में, जो आप उन पर अमल.
हर तो अक्सर init प्रक्रिया इतनी महंगी है कि यह इसके लायक नहीं है भुगतान करने के लिए 'लागत' से यह चल रहा है पर और फिर से प्रत्येक के लिए परीक्षण. एनोटेशन @BeforeClass
मौजूद है के लिए विशेष रूप से उस उद्देश्य के लिए है । जावाडोक के @BeforeClass
यहां तक कि बाहर मंत्र है कि इस समझौते का परीक्षण स्वतंत्रता और चाहिए, इसलिए केवल अगर इस्तेमाल किया जा सकता सेटअप काम आप करते हैं के भीतर इस तरह की एक विधि है, पर्याप्त रूप से महंगा (computationally या अन्यथा) है कि बनाने के लिए tradeoff है ।
अन्य शब्दों में:
अपनी चिंताओं के बारे में परीक्षण आजादी के असली हैं, लेकिन वे लागू करने के लिए @BeforeClass
. @Before
नहीं करता है इस समस्या से ग्रस्त हैं; कि कोड है फिर से चलाने के लिए हर परीक्षा ।
नायब: आप टॉस कर सकते हैं यह सब खिड़की से बाहर अगर आप है static
सामान पर जा रहा है. नहीं है, स्थैतिक सामान में कोड का परीक्षण जब तक तुम सच में पता है तुम क्या कर रहे हैं. मुझे लगता है तुम नहीं है कि, जो मामले में - पर ले जाने के लिए, अपने परीक्षण स्वतंत्र हैं.
@BeforeClass
और @Before
. किसी भी स्पष्टीकरण pls? @Before
कर रहे हैं चलाने से पहले प्रत्येक परीक्षण. सभी तरीकों के साथ @BeforeClass
कर रहे हैं चलाने के लिए, केवल एक बार करने से पहले किसी भी परीक्षण. आम तौर पर, आप सेट static
सामान के साथ @BeforeClass
जो है तो फिर से इस्तेमाल किया (इसलिए, परीक्षण कर रहे हैं, अब स्वतंत्र). आप सेट गैर-स्थैतिक सामान के साथ @Before
है , और इस प्रकार के परीक्षण कर रहे हैं स्वतंत्र है. सिर्फ पढ़ने के लिए दस्तावेज़ इन एनोटेशन. @BeforeClass
(JUnit 5: @BeforeAll
) चलाता है एक बार के लिए पूरे परीक्षण वर्ग, @Before
(JUnit 5: @BeforeEach
) चलाता है इससे पहले कि प्रत्येक एकल परीक्षण विधि है । @BeforeEach
बनाम @BeforeAll
अच्छी तरह से अपने स्पष्टीकरण. हालांकि, मैं नहीं हूँ यकीन है कि अगर मैं जाना चाहिए या नहीं स्पष्ट सूची है कि इस्तेमाल कर रहे हैं द्वारा कई परीक्षण. मैं एय की जरूरत है, उन्हें स्पष्ट करने के लिए में @AfterEach
. किसी भी विचार है? @Before
, प्रिंट और कुछ सामान को हटाने के बिना कुछ भी. तो बस देखो क्या होता है. @AfterEach
. तो, क्या उचित दृष्टिकोण के लिए इस स्थिति में?. किसी भी विचार है? @Before
. मैं कोई विचार नहीं है क्या संभवतः अभी भी भ्रामक हो सकता है आप इस बिंदु पर है । जवाब यह मंत्र!