यूनिट परीक्षणों को व्यवस्थित करने के तीन तरीके हैं: प्रति स्थिरता, कक्षा या फ़ीचर का परीक्षण करें। लेकिन टेस्ट क्लास के लिए न्यूटिट विशेषता को टेस्टफिक्चर कहा जाता है। क्या इसके लिए कोई ऐतिहासिक कारण हैं?टेस्ट क्लास के बजाय testFixture क्यों?
उत्तर
मुख्य ऐतिहासिक कारण यह है कि NUnit JUnit से एक सीधे बंदरगाह के रूप में जीवन शुरू किया था और JUnit यह परीक्षण स्थिरता कहा जाता है।
NUnit 1.0 मेरे समय से पहले था, लेकिन मुझे बताया गया है कि यह जुनीट में सभी .java फ़ाइलों को .cs फ़ाइलों में बदलने और संकलन करने का प्रयास करके शुरू किया गया है। इसे वहां से तय किया गया था और एक यूआई जोड़ा गया था। जब मैं न्यूटिट 2.0 के लिए शामिल हुआ, तब भी एनयूनिट 1.0 में IsVisualAgeForJava
नामक एक विधि थी क्योंकि उस समय जुनीट के लिए विशेष व्यवहार था।
एनयूनीट 2.0 में हमारा उद्देश्य न्यूटिट को और अधिक बनाना था। नेटिश। इसलिए हमने विशेषताओं और अन्य सामानों का एक गुच्छा जोड़ा। हम सभी जावा पृष्ठभूमि से आए और वर्षों से जुनीट के साथ काम किया था। यह [TestFixture]
का उपयोग करने के लिए काफी प्राकृतिक लग रहा था।
अब जब आप इसके बारे में पूछते हैं, तो मैंने इसे देखा।
एक परीक्षण स्थिरता तय आधारभूत स्थिति है जिसे परीक्षण चलाने से पहले स्थापित किया जाना चाहिए, जैसे कि परिणाम अनुमानित और दोहराने योग्य हैं। यूनिट परीक्षण ढांचे में, हम टेस्ट फ़िक्स्चर को बनाने/नष्ट करने के लिए SetUp और TearDown विशेषताएँ/विधियों का उपयोग करते हैं (उदाहरण के लिए सही ऑब्जेक्ट्स के साथ आवृत्ति चर प्रारंभ करें)।
मैं माइक टू की प्रतिक्रिया का सम्मान करता हूं, लेकिन मैं यह कहूंगा कि एनयूनीट टीम को यह बहुत गलत लगता है, और [TestFixture]
का उपयोग न्यूटिट के चेहरे पर एक अर्थपूर्ण वार्ट है। एक टेस्ट क्लास एक स्थिरता नहीं है। जुनीट के संबंध में मैंने जो खोला है, उससे मुझे टेस्ट क्लास के परीक्षण परीक्षण के रूप में कोई संदर्भ नहीं मिला है, न ही मुझे परीक्षण कक्षाओं का जिक्र करते हुए "परीक्षण फिक्स्चर" के बारे में बहुत सी चर्चा मिली है। इसके बजाय, फिक्स्चर के बारे में सभी जुनीट/xUnit चर्चा सेटअप और टियरडाउन से संबंधित है, जो निश्चित रूप से वास्तविक परीक्षण फिक्स्चर सेट करने के लिए उपयोग की जाने वाली सामान्य विधियां हैं।
ध्यान दें कि NUnit 2.5 में, आप [TestFixture] एनोटेशन निकाल सकते हैं।
अद्यतन: (जुलाई 2012)
मैं सिर्फ ककड़ी बुक पढ़ रहा था और पेज 99 पर, लेखक मैट वेन का उपयोग करने का मूल बताते हैं "स्थिरता।" मैं बोली:
वहाँ एक दृढ़ परीक्षण के अंतर्गत परीक्षण सिस्टम और सिस्टम के बीच की कड़ी बुला की एक लंबी परंपरा (हार्डवेयर दुनिया है, जहां परीक्षण जुड़नार जन्म लिया है से आ रही है)। यह "गोंद कोड" भूमिका है जिसे हमने इस पुस्तक में ऑटोमेशन कोड के रूप में संदर्भित किया है। एफआईटी परीक्षण ढांचा शब्द के इस अर्थ का उपयोग करता है। कुछ यूनिट परीक्षण उपकरण (जैसे एनयूनीट) ने परीक्षण केस क्लास को एक स्थिरता के रूप में संदर्भित करके इस मुद्दे को और भ्रमित कर दिया है। एक सर्वव्यापी भाषा के लिए बहुत कुछ! (Wynne & हेलसॉय, 2012)
- 1. वीएस टीम टेस्ट: एकाधिक टेस्ट टेस्ट क्लास
- 2. जुनीट: टेस्ट यूटिल क्लास
- 3. बेस टेस्ट क्लास
- 4. जूनिट टेस्ट क्लास वेरिएबल स्कोप
- 5. क्यों क्लास क्लास + $ 1 (या $ *)
- 6. फ्लोट के बजाय फ्लोटबफर क्यों []?
- 7. रिलीज के बजाय एनडीईबीयूजी क्यों?
- 8. क्यों .NET अपवाद बेस क्लास के बजाय इंटरफ़ेस के विरुद्ध काम नहीं करते हैं?
- 9. कई श्रेणियों के साथ एक टेस्ट क्लास को चिह्नित करें
- 10. "टाइप क्लास" नामक "टाइप क्लास" क्यों है?
- 11. क्यों क्लास क्लास में रिसोर्सएस्ट्रीम विधि है?
- 12. स्ट्रिंग क्लास फ़ाइनल क्यों है?
- 13. व्युत्पन्न वर्ग विधि के बजाय बेस क्लास विधि क्यों कहा जाता है?
- 14. Qt व्युत्पन्न के बजाय बेस क्लास में मेरे स्लॉट की तलाश क्यों कर रहा है?
- 15. क्यों std :: string s ("?? <") आउटपुट के बजाय {? की बजाय ?? <आउटपुट करेगा?
- 16. क्यों NSAssert1, आदि NSAssert के बजाय?
- 17. क्यों cout के बजाय std :: cout?
- 18. सिर्फ पैटर्न मिलान के बजाय टाइपक्लास क्यों?
- 19. विरासत का उपयोग, क्यों जाना जाता है() मेरी टेस्ट क्लास में परिभाषित नहीं है?
- 20. (। *) के बजाय (। *?)
- 21. क्या एक टेस्ट क्लास "ईश्वर वस्तु" बन सकती है?
- 22. एंड्रॉइड टेस्ट केस क्लास में भिन्नताएं क्या हैं?
- 23. reinterpret_cast के बजाय static_cast का उपयोग करना क्यों महत्वपूर्ण है?
- 24. क्यों नीचे टेस्ट लूप बेहतर है?
- 25. टेस्ट केस, "कब", "क्या", और "क्यों"?
- 26. नियंत्रक टेस्ट क्लास से किसी डोमेन क्लास में इंजेक्शन वाली सेवा का नकल कैसे करें?
- 27. जूनिट 4 टेस्ट सूट और व्यक्तिगत टेस्ट क्लासेस
- 28. ब्रॉडकास्ट रिसीवर के लिए कोई टेस्ट इंस्ट्रूमेंटेशन क्यों नहीं है?
- 29. "(;;)" के लिए टेस्ट हालत क्यों सफल होती है?
- 30. कक्षा के नाम के बजाय var का उपयोग क्यों करें?
मैं आपसे सहमत हूं। वो एक गलती थी। एक बार ऐसा होने पर वापस लेना मुश्किल होता है। हालांकि मुझे लगता है कि उस समय जुनीट में समान व्यवहार था। मैं पूरी तरह गलत हो सकता था। यह सब 2002 के आरंभ में था और मैं इसे गलत तरीके से याद कर सकता था। किसी भी तरह से आप अपने दावे में सही हैं कि एक टेस्ट क्लास और एक स्थिरता अलग-अलग चीजें हैं। –
धन्यवाद माइक टू, मैं हमेशा हमारे शिल्प में परियोजनाओं के पीछे भंडारित इतिहास से मोहक हूं। मुझे यह भी एहसास है कि अगर मुझे यह पसंद नहीं है, तो मुझे नहीं चाहिए बल्कि एक पैच जमा करना चाहिए। मुझे आश्चर्य है कि क्या मैं अत्यधिक पेडेंटिक हूं क्योंकि किसी और ने इस बदलाव को आज तक नहीं बनाया है। – ybakos
मैंने इसे दो बार बदलने पर विचार किया। मैंने पीछे की संगतता के साथ मुद्दों की एक दीवार मारा।मैंने साल पहले नियमित रूप से न्यूटिट काम बंद कर दिया था, इसलिए मैं इसे भविष्य में बदलने का इरादा नहीं रखता हूं। –