मैं का उपयोग करना चाहिए एक ही चर सोचा पूरी यूनिट का परीक्षण?

0

सवाल

मैं निर्माण कर रहा हूँ इकाई परीक्षण जावा में और प्रत्येक विधि के लिए, मैं बनाने के लिए एक ही सूची में, चर, आदि. दूसरे हाथ पर, मैं निश्चित रूप से सोचा था कि मैं कर सकता बनाने के लिए इन चर के सभी के रूप में वैश्विक और सेट उनके मूल्यों में setup() विधि (में @Before), लेकिन मैं नहीं हूँ यकीन है कि अगर मूल्यों को बदला जा सकता है जब परीक्षण चल रहा है की वजह से करने के लिए multithreading, आदि. तो, क्या सबसे अच्छा तरीका है इस स्थिति के लिए?

java junit junit5 testing
2021-11-23 13:33:22
1

सबसे अच्छा जवाब

2

के लिए कुछ भी नहीं के बारे में चिंता. JUnit जाएगा एक नया उदाहरण बनाने के अपने परीक्षण वर्ग है, और फिर चलाने के लिए प्रत्येक @Before विधि, और उसके बाद ही चलाने @Test विधि है, और यह करता है कि गीत और नृत्य दिनचर्या सब फिर से के लिए हर @Test एनोटेट विधि में है कि वर्ग. आप उपयोग कर रहे हैं @Before वास्तव में, के रूप में यह इरादा था: यह भंडारण के लिए प्रारंभिक कोड के लिए आवश्यक है कि सभी परीक्षणों में परीक्षण है कि वर्ग है.

JUnit करता है यह इस तरह है क्योंकि 'टेस्ट' स्वतंत्रता के लिए अच्छा है: परीक्षण, अधिमानतः, असफल हो या पास स्वतंत्र के लिए आदेश में, जो आप उन पर अमल.

हर तो अक्सर init प्रक्रिया इतनी महंगी है कि यह इसके लायक नहीं है भुगतान करने के लिए 'लागत' से यह चल रहा है पर और फिर से प्रत्येक के लिए परीक्षण. एनोटेशन @BeforeClass मौजूद है के लिए विशेष रूप से उस उद्देश्य के लिए है । जावाडोक के @BeforeClass यहां तक कि बाहर मंत्र है कि इस समझौते का परीक्षण स्वतंत्रता और चाहिए, इसलिए केवल अगर इस्तेमाल किया जा सकता सेटअप काम आप करते हैं के भीतर इस तरह की एक विधि है, पर्याप्त रूप से महंगा (computationally या अन्यथा) है कि बनाने के लिए tradeoff है ।

अन्य शब्दों में:

अपनी चिंताओं के बारे में परीक्षण आजादी के असली हैं, लेकिन वे लागू करने के लिए @BeforeClass. @Before नहीं करता है इस समस्या से ग्रस्त हैं; कि कोड है फिर से चलाने के लिए हर परीक्षा ।

नायब: आप टॉस कर सकते हैं यह सब खिड़की से बाहर अगर आप है static सामान पर जा रहा है. नहीं है, स्थैतिक सामान में कोड का परीक्षण जब तक तुम सच में पता है तुम क्या कर रहे हैं. मुझे लगता है तुम नहीं है कि, जो मामले में - पर ले जाने के लिए, अपने परीक्षण स्वतंत्र हैं.

2021-11-23 13:38:26

बहुत बहुत धन्यवाद, किसी भी उदाहरण कोड है कि दिखाने के उचित उपयोग?
rzwitserloot

मुझे समझ में नहीं आया के बीच का अंतर @BeforeClass और @Before. किसी भी स्पष्टीकरण pls?
Amadán

सभी तरीकों के साथ @Before कर रहे हैं चलाने से पहले प्रत्येक परीक्षण. सभी तरीकों के साथ @BeforeClass कर रहे हैं चलाने के लिए, केवल एक बार करने से पहले किसी भी परीक्षण. आम तौर पर, आप सेट static सामान के साथ @BeforeClass जो है तो फिर से इस्तेमाल किया (इसलिए, परीक्षण कर रहे हैं, अब स्वतंत्र). आप सेट गैर-स्थैतिक सामान के साथ @Beforeहै , और इस प्रकार के परीक्षण कर रहे हैं स्वतंत्र है. सिर्फ पढ़ने के लिए दस्तावेज़ इन एनोटेशन.
rzwitserloot

@BeforeClass (JUnit 5: @BeforeAll) चलाता है एक बार के लिए पूरे परीक्षण वर्ग, @Before (JUnit 5: @BeforeEach) चलाता है इससे पहले कि प्रत्येक एकल परीक्षण विधि है ।
rzwitserloot

मैं का उपयोग JUnit5, तो मैं देख रहा हूँ के बीच अंतर @BeforeEach बनाम @BeforeAll अच्छी तरह से अपने स्पष्टीकरण. हालांकि, मैं नहीं हूँ यकीन है कि अगर मैं जाना चाहिए या नहीं स्पष्ट सूची है कि इस्तेमाल कर रहे हैं द्वारा कई परीक्षण. मैं एय की जरूरत है, उन्हें स्पष्ट करने के लिए में @AfterEach. किसी भी विचार है?
avandeursen

नहीं स्पष्ट सूची । यह भी लगता है जैसे आप चाहिए चारों ओर खिलौने के साथ यह एक छोटा सा है, क्योंकि जाहिर है एक तो जवाब नहीं है आप के लिए पर्याप्त. कि एक अच्छी वृत्ति! बस.. कुछ परीक्षण करना, कुछ तत्वों को जोड़ने के लिए एक सूची प्रारंभ में केवल एक बार @Before, प्रिंट और कुछ सामान को हटाने के बिना कुछ भी. तो बस देखो क्या होता है.

हाँ, यह हो सकता है खेला जाता है, लेकिन मुझे लगता है कि यह वास्तव में एक सामान्य स्थिति है और वहाँ होना चाहिए एक सामान्य दृष्टिकोण है । तो, मैं बस स्पष्ट करने की आवश्यकता है के बारे में इकाई परीक्षण सम्मेलन के लिए फिर से का उपयोग कर एक ही चर (उदाहरण के लिए बस को परिभाषित करने में एक बार @BeforeEach या @BeforeAll, स्पष्ट चर पर @AfterEach. तो, क्या उचित दृष्टिकोण के लिए इस स्थिति में?. किसी भी विचार है?

का उपयोग करें @Before. मैं कोई विचार नहीं है क्या संभवतः अभी भी भ्रामक हो सकता है आप इस बिंदु पर है । जवाब यह मंत्र!

अन्य भाषाओं में

यह पृष्ठ अन्य भाषाओं में है

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................

इस श्रेणी में लोकप्रिय

लोकप्रिय सवाल इस श्रेणी में