2008-11-04 33 views
337

.NET के लिए वहां बहुत सारे अनूठे ढांचे हैं। मुझे यह छोटी सुविधा तुलना मिली: http://xunit.github.io/docs/comparisons.htmlन्यूट बनाम एमबीयूनीट बनाम एमएसटीएस्ट बनाम xUnit.net

अब मैं हमारे लिए सबसे अच्छा चुनना चाहता हूं। पर कैसे? फर्क पड़ता है क्या? कौन सा भविष्य का सबूत है और इसके पीछे एक सभ्य गति है? क्या मुझे सुविधाओं की परवाह करनी चाहिए? जबकि xUnit सबसे आधुनिक और विशेष रूप से .NET के लिए डिज़ाइन किया गया प्रतीत होता है, NNnit फिर से व्यापक रूप से स्वीकार किया जाता है। एमएसटीएस्ट फिर से विजुअल स्टूडियो में एकीकृत है ...

+10

वह तुलना तालिका पुरानी है। उदाहरण के लिए, NUnit में Assert.Throws आदि भी हैं, और Assertions तालिका में सबकुछ पुराना एपीआई है। नया Assert.That (..., है ....) धाराप्रवाह वाक्यविन्यास बहुत अच्छा है, और अब एक अच्छा के लिए चारों ओर किया गया है। –

+11

क्या आप किसी भी तालिका के बारे में जानते हैं जो अधिक अद्यतित है? – bitbonk

+1

देर 2013, xUnit.net => NUnit से स्थानांतरित हो गया। यह भी ध्यान रखें कि xUnit.NET (प्रोजेक्ट)! = XUnit (श्रेणी, जिसमें से NUnit सदस्य है) – DeepSpace101

उत्तर

172

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

xUnit.NET भी बेहद विस्तार योग्य है।इसकी फैक्टएट्रिब्यूट और ट्राइट एट्रिब्यूट विशेषता वर्गों को सील नहीं किया गया है, और अतिरंजित आधार विधियां प्रदान करती हैं जो आपको इस पर बहुत अधिक नियंत्रण देती हैं कि उन गुणों को कैसे सजाने के तरीके को निष्पादित किया जाना चाहिए। जबकि xUnit.NET इसके डिफ़ॉल्ट रूप में आपको परीक्षण कक्षाएं लिखने की अनुमति देता है जो उनके परीक्षण विधियों के साथ एनयूनीट परीक्षण फिक्स्चर के समान हैं, आप यूनिट परीक्षण के इस रूप तक ही सीमित नहीं हैं। here दिखाए गए अनुसार, आप बीडीडी-शैली कंसर्न/संदर्भ/निरीक्षण विनिर्देशों का समर्थन करने के लिए ढांचे का विस्तार करने के लिए स्वतंत्र हैं।

xUnit.NET भी थ्योरी विशेषता और संबंधित डेटा विशेषताओं के साथ बॉक्स के बाहर फिट-शैली परीक्षण का समर्थन करता है। फिट इनपुट डेटा एक्सेल, डेटाबेस, या यहां तक ​​कि एक कस्टम दस्तावेज़ स्रोत जैसे वर्ड डॉक्यूमेंट (बेस डेटा एट्रिब्यूट को बढ़ाकर) से लोड किया जा सकता है। यह आपको यूनिट परीक्षण और एकीकरण परीक्षण दोनों के लिए एक एकल परीक्षण मंच पर कैपिटल करने की अनुमति देता है, जो कि उत्पाद निर्भरताओं और आवश्यक प्रशिक्षण को कम करने में बहुत बड़ा हो सकता है।

परीक्षण के लिए अन्य दृष्टिकोण xUnit.NET के साथ भी लागू किए जा सकते हैं ... संभावनाएं असीमित हैं। एक और बहुत आगे दिखने वाले मॉकिंग फ्रेमवर्क के साथ संयुक्त, Moq, दोनों स्वचालित परीक्षण को लागू करने के लिए एक बहुत ही लचीला, एक्स्टेंसिबल और शक्तिशाली मंच बनाते हैं। अच्छी तरह से सी में मिश्रित-मोड परियोजनाओं ++ साथ

+32

हालांकि यह एक साल पहले सच था, एनएनआईटी ने तब से अधिकांश विशेषताओं को प्रश्न में जोड़ा है। NNnit में आप किसी भी तरह से परीक्षण लिख सकते हैं। –

+7

यह इतना नहीं है कि कौन से गुण उपलब्ध हैं, लेकिन उनका उपयोग कैसे किया जा सकता है। xUnit.NET को जमीन से एक अत्यधिक लचीला और एक्स्टेंसिबल ढांचा बनाने के लिए डिज़ाइन किया गया था जिसने आपको परीक्षण की किसी विशेष विधि में लॉक नहीं किया था, और आपको नवीनतम क्षमताओं को प्राप्त करने के लिए नियमित रूप से कोर फ्रेमवर्क को अपडेट करने की आवश्यकता नहीं है। – jrista

+9

1. विशेषताओं पर स्पष्ट रूप से अलग-अलग नाम एक बिंदु नहीं बनायेंगे। 2. न्यूटिट एक्स्टेंसिबल था और यह एक्स्टेंसिबल जारी है:? 3. परीक्षण के लिए डेटा पंक्ति पैरामीटर नुनिट में समर्थित हैं। समय पहले वे एक विस्तार में समर्थित थे :) 4. Moq के साथ संयुक्त नुनिट एक ही चीज़ बनाता है। 5. बीडीडी के लिए मैं specflow कहूंगा, जो कई यूनिट परीक्षण ढांचे के साथ आसानी से एकीकृत करता है। – graffic

122

एनयूनीट शायद तीसरे पक्ष के उपकरणों द्वारा सबसे अधिक समर्थित है। यह अन्य तीनों की तुलना में काफी लंबा रहा है।

मैं व्यक्तिगत रूप से इकाई परीक्षण ढांचे के बारे में ज्यादा परवाह नहीं करता हूं, पुस्तकालयों का मज़ाकिया IMHO अधिक महत्वपूर्ण है (और आपको बहुत अधिक लॉक करता है)। बस एक उठाओ और इसके साथ छड़ी।

+3

आपकी शीर्ष नकली लाइब्रेरी क्या है? – dplante

+28

मुझे मोक पसंद है, राइनोमोक्स भी अच्छा है। –

+5

पेक्स और मोल्स की जांच करना भी उपयोगी हो सकता है, मॉल भाग विशेष रूप से मॉकिंग के लिए उपयोगी होता है। –

6

यह एक बड़ा सौदा नहीं है, यह उनके बीच स्विच करना बहुत आसान है। एमएसटीएस्ट एकीकृत किया जा रहा है या तो एक बड़ा सौदा नहीं है, बस testdriven.net पकड़ो।

पिछले व्यक्ति की तरह एक मॉकिंग फ्रेमवर्क चुनें, इस समय मेरा पसंदीदा मोक है।

100

मैं एमएसटीएस्ट के साथ नहीं जाऊंगा। यद्यपि यह शायद माइक्रोसॉफ्ट के साथ ढांचे का सबसे भविष्य का सबूत है, यह सबसे लचीला समाधान नहीं है। यह कुछ हैक्स के बिना अकेले खड़े नहीं होगा। तो इसे विजुअल स्टूडियो इंस्टॉल किए बिना टीएफएस के अलावा किसी बिल्ड सर्वर पर चलाना मुश्किल है। विजुअल स्टूडियो टेस्ट-रनर वास्तव में Testdriven.Net + किसी भी अन्य ढांचे से धीमा है। और क्योंकि इस ढांचे की रिलीज विजुअल स्टूडियो की रिलीज से जुड़ी हुई है, वहां कम अपडेट हैं और यदि आपको पुराने वीएस के साथ काम करना है तो आप पुराने एमएसटीएस्ट से जुड़े हुए हैं।

मुझे नहीं लगता कि यह आपके द्वारा उपयोग किए जाने वाले अन्य ढांचे के बारे में बहुत मायने रखता है। एक से दूसरे में स्विच करना वास्तव में आसान है।

मैं अपने सहकर्मियों की वरीयता के आधार पर व्यक्तिगत रूप से XUnit.Net या NUnit का उपयोग करता हूं। न्यूटिट सबसे मानक है। XUnit.Net सबसे पतला ढांचा है।

+32

मुझे इस निष्कर्ष पर लात मारकर चिल्लाया गया है। मैं वास्तव में विजुअल स्टूडियो के साथ एकीकरण के कारण एमएसटीएस्ट का उपयोग करना चाहता था, लेकिन यह भी इसकी कमजोरी है। मुझे गैर-माइक्रोसॉफ्ट बिल्ड सर्वर पर परीक्षण चलाने की ज़रूरत है और वहां कोई रास्ता नहीं है कि मैं इसे प्राप्त करने के लिए विजुअल स्टूडियो इंस्टॉल कर रहा हूं। यह एक शर्म की बात है कि माइक्रोसॉफ्ट महान उपकरण पैदा करता है और फिर उन्हें लगभग अटूट प्रदान करता है। MSTest की भयानकता को बुलाए जाने के लिए –

+10

+1। दिन के अंत में, इससे कोई फ़र्क नहीं पड़ता कि आप किस इकाई परीक्षण ढांचे का उपयोग करते हैं, बस जब तक कि यह MSTest –

7

यह एक छोटे से/व्यक्तिगत पैमाने पर एक बड़ा सौदा नहीं है, लेकिन यह बड़े पैमाने पर एक बड़ा सौदा हो सकता है। मेरा नियोक्ता एक बड़ी माइक्रोसॉफ्ट की दुकान है, लेकिन कई कारणों से टीम सिस्टम/टीएफएस में खरीद नहीं सकता/नहीं। वर्तमान में हम सबवर्सन + ऑर्कस + एमबीयूनीट + टेस्टड्रिवेन.नेट का उपयोग करते हैं और यह अच्छी तरह से काम करता है, लेकिन टीडी.नेट प्राप्त करना एक बड़ी परेशानी थी। MBUnit + TestDriven.NET की संस्करण संवेदनशीलता भी एक बड़ी परेशानी है, और इसे संभालने और प्रबंधित करने के लिए कानूनी समीक्षा और खरीद के लिए एक अतिरिक्त वाणिज्यिक चीज़ (टीडी.नेट) होने के कारण, यह मामूली नहीं है। मेरी कंपनी, कई कंपनियों की तरह, एक एमएसडीएन सदस्यता मॉडल के साथ वसा और खुश हैं, और इसका उपयोग सैकड़ों डेवलपर्स के लिए खरीद बंद करने के लिए नहीं किया जाता है। दूसरे शब्दों में, पूरी तरह से एकीकृत एमएस प्रस्ताव, जबकि निश्चित रूप से हमेशा सबसे अच्छी रोटी नहीं है, मेरी राय में एक महत्वपूर्ण मूल्य-जोड़ है।

मुझे लगता है कि क्योंकि यह काम करता है और हम पहले से ही कूबड़ संगठनात्मक से अधिक मिल गया है हम अपने वर्तमान कदम के साथ रहना होगा, लेकिन मुझे यकीन है कि चाहते हैं तो हम मजबूत और हमारे देव ढेर को आसान बनाने में कर सकता है एमएस इस क्षेत्र में एक सम्मोहक पेशकश की एक सा।

+2

नहीं है, इस क्षेत्र में रीशेर्पर की आकर्षक पेशकश है! – Squirrel

+6

आपका उत्तर उत्सुक है, और आत्म-विरोधाभासी लगता है। आप कहते हैं कि आप एक बड़ी माइक्रोसॉफ्ट-शॉप हैं, लेकिन टीएफएस का उपयोग नहीं करेंगे (जो कि पूरी बात है- आपको इसके बिना लंबवत एकीकरण का लाभ नहीं मिलेगा) और एक एमएसडीएन सदस्यता मॉडल का उपयोग करें, लेकिन गैर- -एमएस दृष्टिकोण। मैं ईमानदार होने के लिए खो गया हूँ। दुर्भाग्यवश, पुरानी पुरानी उत्तर। – nicodemus13

5

Nunit does not काम तो मैं छोड़ने के लिए यह

+0

आपने पिकिंग का अंत क्या किया? –

+1

मुझे इस जवाब पर गर्व नहीं है लेकिन मैंने उस परियोजना के लिए इकाई परीक्षण छोड़ दिया है। मैंने – Eric

+1

त्रुटियों के रनटाइम डिटेक्शन के लिए बहुत सी सत्यापन प्रक्रियाएं लिखने का सहारा लिया था, मुझे मिश्रित मोड में एनयूनीट का उपयोग करने की उम्मीद थी, लेकिन अंत में यह अपर्याप्त पाया गया, अंत में मैं googletest के लिए गया जो एक उत्कृष्ट सी ++ इकाई परीक्षण ढांचा और वी सरल है स्थापित करना। – chillitom

18

एक और परीक्षण ढांचे के साथ पूरक, की जगह नहीं, MSTest पर विचार किया था। अधिक पूर्ण-फीचर्ड परीक्षण ढांचे के लाभ प्राप्त करते समय आप विजुअल स्टूडियो एमएसटीएस्ट एकीकरण को रख सकते हैं।

उदाहरण के लिए, मैं एमएसटीएटी के साथ xUnit का उपयोग करता हूं। XUnit.dll असेंबली का संदर्भ जोड़ें, और बस ऐसा कुछ करें। आश्चर्य की बात है, यह सिर्फ काम करता है!

using Microsoft.VisualStudio.TestTools.UnitTesting; 
using Assert = Xunit.Assert; // <-- Aliasing the Xunit namespace is key 

namespace TestSample 
{ 
    [TestClass] 
    public class XunitTestIntegrationSample 
    { 
     [TestMethod] 
     public void TrueTest() 
     { 
      Assert.True(true); // <-- this is the Xunit.Assert class 
     } 

     [TestMethod] 
     public void FalseTest() 
     { 
      Assert.False(true); 
     } 
    } 
} 
+0

यह तकनीक अन्य उत्तरों में उल्लिखित एनयूनीट, एमबीयूनीट, या अन्य परीक्षण ढांचे के लिए भी काम कर सकती है, लेकिन मैंने उन्हें आजमाया नहीं है। –

+1

क्या आपको लगता है कि मैं इस दृष्टिकोण के साथ एमएसटीएस्ट के साथ काम करने के लिए पैरामीटर परीक्षण प्राप्त कर सकता हूं, मैट? – DevDave

संबंधित मुद्दे