NUnit बनाम xUnit


110

NUnit और xUnit.net के बीच अंतर क्या हैं ? केवल एक ही नहीं, उनमें से दो को विकसित करने की क्या बात है?

मैंने पढ़ा है कि xUnit को NUnit के आविष्कारक द्वारा विकसित किया जा रहा है:

xUnit.net .NET फ्रेमवर्क के लिए एक इकाई परीक्षण उपकरण है। NUnit के मूल आविष्कारक द्वारा लिखित

दूसरी ओर:

NUnit सभी .Net भाषाओं के लिए एक इकाई-परीक्षण ढांचा है। वर्तमान उत्पादन रिलीज़, संस्करण 2.6, इस xUnit आधारित इकाई परीक्षण उपकरण का सातवाँ प्रमुख रिलीज़ है

तो सच कहाँ है?


3
जैसा कि @ जॉय ने बताया है - यह लिंक किए गए सवाल का सीधा डुप्लिकेट नहीं है। इस मामले में, ओपी ने मौलिक रूप से कुछ गलत समझा है; अर्थात् xUnit.net के बीच का अंतर - इकाई परीक्षण उपकरण और x इकाई - इकाई परीक्षण चौखटे (nUnit, jUnit, आदि) के वर्ग के लिए सामान्यीकृत शब्द। वोट देने के लिए फिर से खोलना।
रोब लेविन

जवाबों:


131

इस उत्तर को लिखने के समय नवीनतम NUnit संस्करण v3.5 है और xUnit.net v2.1 है।

दोनों चौखटे भयानक हैं, और वे दोनों समानांतर परीक्षण चलाने का समर्थन करते हैं (हालांकि एक अलग तरीके से)। NUnit 2002 के आसपास रहा है, यह व्यापक रूप से उपयोग किया जाता है, अच्छी तरह से प्रलेखित है और इसका एक बड़ा समुदाय है, जबकि xUnit.net अधिक आधुनिक, अधिक TDD के अनुयायी, अधिक एक्सटेंसिबल, और .NET कोर विकास में भी ट्रेंडिंग है। यह भी अच्छी तरह से प्रलेखित है।

इसके अलावा, मुख्य अंतर जो मैंने देखा है वह यह है कि xUnit.net परीक्षण विधियों को चलाता है। इसलिए, NUnit में , हमें एक परीक्षण वर्ग और उसमें परीक्षण विधियों का एक सेट मिला है। NUnit परीक्षण वर्ग का एक नया उदाहरण बनाता है और फिर उसी उदाहरण से सभी परीक्षण विधि चलाता है। जबकि xUnit.net परीक्षण विधियों में से प्रत्येक के लिए परीक्षण वर्ग का एक नया उदाहरण बनाता है। । इसलिए, कोई परीक्षण विधियों के बीच डेटा साझा करने के लिए फ़ील्ड या गुणों का उपयोग नहीं कर सकता है, जो एक बुरा अभ्यास है, क्योंकि हमारे परीक्षण तरीके एक-दूसरे पर निर्भर होंगे जो TDD में स्वीकार्य नहीं है। इसलिए यदि आप xunit.net का उपयोग करते हैं, तो आप सुनिश्चित कर सकते हैं कि आपके परीक्षण के तरीके पूरी तरह से अलग हैं।

यदि आप अपने परीक्षण विधियों के बीच कुछ डेटा साझा करने के लिए तैयार हैं, तो xUnit आपको ऐसा करने देगा। इसलिए, डिफ़ॉल्ट रूप से सभी परीक्षण विधियां पूरी तरह से पृथक हैं, लेकिन आप विशिष्ट रूप से विशिष्ट मामलों में इस अलगाव को तोड़ सकते हैं। मुझे यह रवैया पसंद है, यही कारण है कि मुझे यह पसंद है।


4
अधिक जानकारी के लिए मेरी नवीनतम पोस्ट की जाँच करें: codopia.wordpress.com/2017/02/20/…
akazemis

2
समानांतर निष्पादन के बारे में आप जो लिखते हैं वह सच नहीं है। शायद यह आपके पोस्ट के समय था, लेकिन अब ऐसा नहीं है। इस xunit.net/docs/running-tests-in-parallel की जाँच करें । यह कहता है कि एक कक्षा में परीक्षण विधियां कभी भी समानांतर रूप से नहीं चलेंगी।
गोंडिल

धन्यवाद @ गोंडिल, आप सही कह रहे हैं, यह समानांतर में एक एकल वर्ग के तरीकों को नहीं चलाएगा।
समानतावाद

1
मुझे यकीन नहीं है कि आपको कैसे पता चला कि xUnit "अच्छी तरह से प्रलेखित" है, क्योंकि यह स्पष्ट रूप से नहीं करता है। सभी जानकारी सामुदायिक स्रोतों और स्टैकओवरफ्लो प्रश्नों के माध्यम से मिलनी चाहिए, जैसे कि NUnit करता है। मैं वास्तव में आपके उत्तर के बाद xUnit के बारे में उत्साहित था, लेकिन लगा कि NUnit .NET कोर में भी ठीक कर रहा है।
CularBytes

1
@Laderon मैंने 4 साल पहले पोस्ट किया था और तब से अब तक xunit का उपयोग कर रहा हूं। प्रलेखन और समुदाय पहले की तुलना में बेहतर है और अब यह अधिक परिपक्व है। इसलिए मन की शांति के साथ XUnit का उपयोग करें, आपको NUnit को वापस जाने की आवश्यकता नहीं होगी। :)
एकाज़ीमिस

33

आप एक ही उपकरण (के नाम भ्रमित कर रहे हैं xUnit.net इकाई परीक्षण चौखटे (का एक पूरा वर्ग के नाम के साथ) XUnit , एक्स एक भाषा / पर्यावरण की चर्चा करते हुए, जैसे JUnit, NUnit, ...)।


1
अफ़सोस कि यह बंद हो गया, क्योंकि यह एक सीधा डुप्लिकेट नहीं है - आप सही हैं - ओपी दो शब्दों के बीच भ्रमित हो गया है जो लगभग समान हैं।
रोब लेविन

मैंने शीर्षक को थोड़ा बदल दिया है, यह सुनिश्चित करने के लिए कि कोई भ्रम नहीं होगा।
रुस्लान

1
मैं शीर्षक से नहीं गया था, बल्कि आपके प्रश्न में उद्धरणों के हाइलाइट किए गए खंड थे। लेकिन शायद मैंने आपको गलत समझा।
जोए

8

xUnit पेशेवरों:

पुराने "सेटअप" और "टियरडाउन" तरीकों से बचकर xUnit एक नई अवधारणा का अनुसरण करता है। यह हमें IDis प्रयोज्य और एक कंस्ट्रक्टर का उपयोग करने के लिए मजबूर करता है जैसा कि हमें .NET डेवलपर्स के रूप में करना चाहिए। इसके अलावा xUnit में एक स्पष्ट संदर्भ साझा करने की अवधारणा है।

xUnit विपक्ष:

परीक्षण संदर्भ प्राप्त करने के लिए उपलब्धता अभी तक लागू नहीं हुई है।


1
"परीक्षण संदर्भ" क्या है ? क्या अब तक इसे लागू किया गया है?
पीटर मोर्टेंसन

8

एक्सयूनिट का एक लाभ यह है कि यह विभिन्न वर्गों में परीक्षण पाता है; यह उन्हें समानांतर में चलाता है । यदि आपके पास कई परीक्षण मामले हैं, तो यह बहुत समय बचा सकता है।

आप निश्चित रूप से इसे बंद कर सकते हैं, या इसके संचालन को नियंत्रित कर सकते हैं (थ्रेड्स की संख्या, प्रति वर्ग धागे, विधानसभा प्रति परीक्षण, आदि)।

इस नमूना समाधान को दो परीक्षण परियोजनाओं के साथ देखें, एक अन्य NUnit का उपयोग करके

आप यहां xUnit में समानांतर परीक्षणों के बारे में अधिक पढ़ सकते हैं ।


क्या xunit के पास समानांतर में चलने के लिए उसी कक्षा में परीक्षण करने का कोई अन्य तरीका है?
मागेश
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.