c# - यूनिट परीक्षण के लिए एनयूनीट बनाम विजुअल स्टूडियो 2008 की टेस्ट प्रोजेक्ट्स?




asp.net-mvc visual-studio-2008 (13)

मैं काम पर एक नई परियोजना शुरू करने जा रहा हूं और यूनिट परीक्षण में शामिल होना चाहता हूं। हम वीएस 2008, सी #, और एएसपी.नेट एमवीसी सामान का उपयोग करेंगे। मैं या तो एनयूनीट या निर्मित परीक्षण परियोजनाओं का उपयोग कर रहा हूं जो वीएस -2008 है, लेकिन मैं अन्य सुझावों का शोध करने के लिए खुला हूं। क्या एक प्रणाली दूसरे की तुलना में बेहतर या समझने में आसान है? मैं इस परियोजना को आगे बढ़ाने के हमारे विकास प्रयासों के लिए "सर्वोत्तम अभ्यास" के रूप में स्थापित करने के लिए देख रहा हूं।

किसी भी मदद और सुझाव के लिए धन्यवाद !!


VS2008 के लाभ / परिवर्तन अंतर्निहित यूनिट परीक्षण फ्रेमवर्क

  1. 2008 संस्करण अब पेशेवर संस्करणों में उपलब्ध है (इससे पहले वीएस के महंगे संस्करणों की आवश्यकता होती है, यह सिर्फ डेवलपर यूनिट परीक्षण के लिए है।) जो खुले / बाहरी परीक्षण ढांचे की एकमात्र पसंद के साथ कई डेवलपर्स को छोड़ देता है।
  2. एकल कंपनी द्वारा समर्थित एपीआई में निर्मित।
  3. परीक्षण चलाने और बनाने के लिए एक ही टूल का उपयोग करें (आप कमांड लाइन का उपयोग करके उन्हें एमएसटीएस्ट का उपयोग कर सकते हैं)
  4. सरल डिजाइन (कोई नकली ढांचा नहीं दिया गया है, लेकिन यह कई प्रोग्रामर के लिए एक महान प्रारंभिक बिंदु है)
  5. दीर्घकालिक समर्थन दिया गया (मुझे अभी भी याद है कि एनडीओसी के साथ क्या हुआ, मैं एक परीक्षण ढांचे पर प्रतिबद्ध नहीं होना चाहता जो शायद 5 वर्षों में समर्थित न हो, लेकिन मैं अब भी एक महान ढांचे पर विचार करता हूं।)
  6. यदि टीम बैकएंड सर्वर का उपयोग आपके बैकएंड के रूप में करते हैं, तो आप एक साधारण फैशन में विफल परीक्षण डेटा के साथ कार्य आइटम या बग बना सकते हैं।

एनयूनीट पर वीएस यूनिट परीक्षण के साथ मेरा मुख्य गोमांस वीएस परीक्षण निर्माण निजी सदस्य पहुंच के लिए जेनरेट कोड का एक गुच्छा इंजेक्ट करता है।

कुछ लोग अपनी निजी विधियों का परीक्षण करना चाहते हैं, कुछ शायद नहीं, यह एक अलग विषय है।

मेरी चिंता यह है कि जब मैं यूनिट परीक्षण लिख रहा हूं तो उन्हें बेहद नियंत्रित किया जाना चाहिए, इसलिए मुझे पता है कि मैं वास्तव में क्या परीक्षण कर रहा हूं और वास्तव में मैं इसका परीक्षण कैसे कर रहा हूं। यदि ऑटो जेनरेट कोड है तो मैं उस स्वामित्व में से कुछ खो रहा हूं।


ग्रीनफील्ड परियोजना के लिए XUnit एक और संभावना है। यह शायद एक अधिक सहज ज्ञान युक्त वाक्यविन्यास है, लेकिन यह अन्य ढांचे के साथ वास्तव में संगत नहीं है।

http://www.codeplex.com/xunit


जहां तक ​​मुझे पता है, इन दिनों .NET के साथ यूनिट परीक्षण के लिए चार फ्रेमवर्क उपलब्ध हैं

  • NUnit
  • MbUnit
  • MSTest
  • XUnit

न्यूनिट हमेशा सामने रहा है लेकिन पिछले साल या तो अंतराल बंद हो गया है। मैं अभी भी खुद को एननीट पसंद करता हूं, खासकर जब उन्होंने थोड़ी देर पहले एक फ्लैंट इंटरफ़ेस जोड़ा जो परीक्षण को बहुत पठनीय बनाता है।

यदि आप यूनिट परीक्षण के साथ बस शुरुआत कर रहे हैं तो यह शायद बहुत अंतर नहीं करता है। एक बार जब आप तेजी से बढ़ जाएंगे तो आप यह तय करने के लिए बेहतर स्थिति में होंगे कि आपकी आवश्यकताओं के लिए कौन सा ढांचा सर्वोत्तम है।


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


मुझे संदेश मिला कि "NUnit फ़ाइल संरचना VSTest से अधिक समृद्ध है" ... बेशक यदि आप NUnit फ़ाइल संरचना को प्राथमिकता देते हैं, तो आप इस समाधान का उपयोग अन्य तरीकों से कर सकते हैं, जैसे (NUnit-> VS):

 #if !MSTEST
  using NUnit.Framework;
 #else
  using Microsoft.VisualStudio.TestTools.UnitTesting;
  using TestFixture = Microsoft.VisualStudio.TestTools.UnitTesting.TestClassAttribute;
  using Test = Microsoft.VisualStudio.TestTools.UnitTesting.TestMethodAttribute;
  using SetUp = Microsoft.VisualStudio.TestTools.UnitTesting.TestInitializeAttribute;
  using TearDown = Microsoft.VisualStudio.TestTools.UnitTesting.TestCleanupAttribute;
 #endif

या कोई अन्य रूपांतरण ... :-) यह यहां उपयोग करने वाला कंपाइलर के लिए उपनाम है।


मैं एमएस के छोटे परीक्षण ढांचे का उपयोग करना पसंद करूंगा, लेकिन अब के लिए एनयूनीट के साथ चिपक रहा हूं। एमएस के साथ समस्याएं आमतौर पर (मेरे लिए) होती हैं

  • साझा "परीक्षण" फ़ाइल (बिंदुहीन) जिसे बनाए रखा जाना चाहिए
  • टेस्ट सूचियां कई डेवलपर्स / वीसीएस के साथ संघर्ष का कारण बनती हैं
  • गरीब एकीकृत यूआई - भ्रमित सेटअप, बोझिल परीक्षण चयन
  • कोई अच्छा बाहरी धावक नहीं

चेतावनी - अगर मैं एएसपीएक्स साइट का परीक्षण कर रहा था, तो मैं निश्चित रूप से एमएस का उपयोग करता हूं - अगर मैं अकेले विकास कर रहा था, तो एमएस भी ठीक होगा - अगर मेरे पास सीमित कौशल था और एनयूनीट को कॉन्फ़िगर नहीं कर सका :)

मुझे अपने परीक्षणों को लिखना और NUnitGUI या अन्य फ्रंट सिरों में से एक को आग लगाना बहुत आसान लगता है (टेस्टड्रिवन बहुत दूर है)। कमांडलाइन संस्करण के साथ डीबगिंग सेट करना भी बहुत आसान है।


मैंने एमएसटीएस्ट के साथ शुरुआत की लेकिन एक साधारण कारण के लिए स्विच किया। एमएसटीएस्ट अन्य असेंबली से टेस्ट तरीके की विरासत का समर्थन नहीं करता है।

मुझे एक ही परीक्षा को कई बार लिखने के विचार से नफरत है। विशेष रूप से एक बड़ी परियोजना पर जहां परीक्षण विधियां आसानी से 100 के परीक्षणों में चल सकती हैं।

NUnit मुझे वही करता है जो मुझे चाहिए। एनयूनीट के साथ गायब होने वाली एकमात्र चीज एक विजुअल स्टूडियो एडिन है जो प्रत्येक परीक्षण के लाल / हरे रंग की स्थिति (वीएसटीएस की तरह) प्रदर्शित कर सकती है।


यूनिट-परीक्षण ढांचा वास्तव में बहुत मायने रखता नहीं है, क्योंकि आप अलग-अलग प्रोजेक्ट फ़ाइलों और सशर्त संकलन (जैसे, वीएस-> एनयूनीट) के साथ परीक्षण कक्षाओं को परिवर्तित कर सकते हैं:

 #if !NUNIT
  using Microsoft.VisualStudio.TestTools.UnitTesting;
 #else
  using NUnit.Framework;
  using TestClass = NUnit.Framework.TestFixtureAttribute;
  using TestMethod = NUnit.Framework.TestAttribute;
  using TestInitialize = NUnit.Framework.SetUpAttribute;
  using TestCleanup = NUnit.Framework.TearDownAttribute;
  using TestContext = System.String;
  using DeploymentItem = NUnit.Framework.DescriptionAttribute;
 #endif

TestDriven.Net प्लगइन अच्छा है और बहुत महंगा नहीं है ... केवल सादा VS2008 के साथ आपको अपनी टेस्ट क्लास या टेस्ट सूची से परीक्षण मिलना होगा। TestDriven.Net के साथ आप सीधे परीक्षण कर रहे वर्ग से अपना परीक्षण चला सकते हैं। आखिरकार, इकाई परीक्षण को डेवलपर के पास बनाए रखने के लिए आसान होना चाहिए।


विजुअल स्टूडियो के परीक्षण ढांचे की एक मामूली परेशानी यह है कि यह कई परीक्षण चलाने वाली फाइलें बनाएगी जो आपकी प्रोजेक्ट निर्देशिका को अव्यवस्थित करते हैं - हालांकि यह एक सौदा का बड़ा नहीं है।

साथ ही, यदि आपके पास TestDriven.NET जैसे प्लगइन की कमी है, तो आप Visual Studio वातावरण के भीतर अपने NUnit (या MbUnit, xUnit, आदि) यूनिट परीक्षणों को डीबग नहीं कर सकते हैं, जैसा कि आप माइक्रोसॉफ्ट वीएस परीक्षण ढांचे के साथ बना सकते हैं।


Daok ने Daok परीक्षण परियोजनाओं के सभी Daok नाम दिया, यहां Daok के समर्थक हैं।

  • Nnnit एक मजाकिया ढांचा है।
  • NUnit आईडीई के बाहर चलाया जा सकता है, यह उपयोगी हो सकता है यदि आप CC.Net जैसे गैर-एमएस बिल्ड सर्वर पर परीक्षण चलाना चाहते हैं
  • दृश्य स्टूडियो की तुलना में एनयूनीट में अधिक संस्करण आ रहे हैं। आपको नए संस्करण के लिए वर्षों का इंतजार नहीं करना है और आपको नई सुविधाओं के लिए आईडीई का एक नया संस्करण स्थापित करने की आवश्यकता नहीं है।
  • एनयूनीट के लिए पंक्ति परीक्षण आदि जैसे एक्सटेंशन विकसित किए जा रहे हैं।
  • विजुअल स्टूडियो परीक्षणों को किसी कारण से शुरू करने में काफी समय लगता है। यह 2008 में बेहतर है लेकिन मेरे स्वाद के लिए अभी भी बहुत धीमी है। यह देखने के लिए कि आप कुछ तोड़ नहीं चुके हैं, यह देखने के लिए जल्दी से एक परीक्षण चला रहा है। IDE से परीक्षण चलाने के लिए testdriven.Net जैसे कुछ के साथ NUnit वास्तव में बहुत तेज है। खासकर जब एकल परीक्षण चलाते हैं।
    Kjetil Klaussen के साथ यह विजुअल स्टूडियो testrunner के कारण होता है, TestDriven.Net में एमएसटीएस्ट परीक्षण चलाते हुए एमएनटीएस्ट प्रदर्शन एनयूनीट के बराबर बनाता है।


मैंने दोनों का उपयोग करके कुछ टीडीडी किया है और (शायद मैं थोड़ा गूंगा हूं) nnnit मेरे लिए उपयोग करने के लिए बहुत तेज़ और सरल लगता है। और जब मैं बहुत कुछ कहता हूं, मेरा मतलब बहुत है।

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

इसके अलावा, nnnit में, आपको बस उन परीक्षणों पर क्लिक करना होगा जिन्हें आप चलाना चाहते हैं (केवल एक? कक्षा को कवर करने वाले सभी परीक्षण? असेंबली? समाधान?)। एक बार दबाओ। और खिड़की स्पष्ट और बड़ी है। आपको स्पष्ट हरे और लाल रोशनी मिलती है। आप वास्तव में जानते हैं कि एक दृष्टि में क्या होता है।

वीएसटीएस में, परीक्षण सूची स्क्रीन के नीचे जाम है, यह छोटा और बदसूरत है। क्या हुआ यह जानने के लिए आपको दो बार देखना होगा। और आप केवल एक टेस्ट नहीं चला सकते हैं (ठीक है, मुझे अभी तक पता नहीं चला!)।

लेकिन मैं गलत हो सकता हूं, ज़ाहिर है - मैंने सिर्फ 21 ब्लॉग पोस्ट पढ़े हैं "वीएसटीएस का उपयोग करके सरल टीडीडी कैसे करें"। मुझे और पढ़ना चाहिए था, आप सही हैं।

Nnnit के लिए, मैंने एक पढ़ा। और मैं उसी दिन टीडीडी कर रहा था। मज़ा के साथ

वैसे, मैं आमतौर पर माइक्रोसॉफ्ट उत्पादों से प्यार करता हूँ। विजुअल स्टूडियो वास्तव में डेवलपर खरीद सकता है सबसे अच्छा उपकरण है - लेकिन विजुअल स्टूडियो टीम सिस्टम में टीडीडी और वर्क आइटम प्रबंधन वास्तव में बेकार है।

शुभकामनाएं। सिल्वेन।





nunit