سؤال

العودة إلى المزيد من .NET بعد بضع سنوات من عدم استخدامه بدوام كامل، والتساؤل عن حزم اختبار الوحدات الجيدة هذه الأيام.

أنا على دراية بـ NUnit (منذ بضع سنوات)، وقد لعبت لفترة وجيزة مع IronRuby، بهدف الحصول على شيء مثل rspec، لكن لا أعرف الكثير عن ذلك.

أدرك أنه يمكنني البحث عن هذا في Google وأتوقف عنده ولكن أعتقد أنه من المحتمل أن أحصل على إجابة أفضل وأكثر استنارة من طرح سؤال هنا :-)

اقتراحات؟

هل كانت مفيدة؟

المحلول

هناك الكثير من الجنون.مجنون جيد، على ما أعتقد.

  • بالنسبة للأنواع المحافظة (أنا)، وحدة لا يزال متاحا وما زال أكثر من قادر.
  • بالنسبة لأنواع ميكروسوفت، MSTest كافية، ولكنها بطيئة وعتيقة مقارنة بالنونيت.كما أنه يفتقر إلى تغطية التعليمات البرمجية دون دفع مبالغ كبيرة مقابل الإصدارات باهظة الثمن من Visual Studio.
  • هناك ايضا مبيونيت.إنها تشبه NUnit، ولكنها تحتوي على ميزات رائعة مثل RowTest (تشغيل نفس الاختبار باستخدام معلمات مختلفة) وRolback (إعادة قاعدة البيانات كما وجدتها بعد الاختبار)
  • وأخيرا، xUnit.net هو الخيار العصري مع بعض المواقف.
  • أوه و TestDriven.NET سوف يوفر لك تكامل IDE لكل من Nunit وMBunit.

أنا متأكد من أنهم جميعا على ما يرام.سأبتعد عن MSTest، إلا إذا كنت تستمتع فقط براحة الحصول على كل شيء في IDE واحد خارج الصندوق.

سكوت هانسيلمان لديه بودكاست حول هذا الموضوع بالذات.

نصائح أخرى

نحن نستخدم NUnit و ميغابايت هنا.نحن نستخدم TestDriven.NET لتشغيل اختبارات الوحدة من داخل Visual Studio.نحن نستخدم ممتاز، موصى به للغاية RhinoMocks كإطار وهمي.

التمسك NUnit.لا تذهب إلى أي مكان بالقرب من MSTest.

يعد العمل مع NUnit + ReSharper متعة مطلقة.

اعتدت على استخدام NUnit، لكني الآن أميل إلى استخدام MbUnit، لميزتين رئيسيتين:1.تسمح لك ميزة RowTest بإجراء نفس الاختبار بسهولة على مجموعات مختلفة من المعلمات، وهو أمر مهم إذا كنت تريد حقًا تغطية شاملة.2.تتيح لك ميزة التراجع إجراء اختبارات على قاعدة البيانات الخاصة بك أثناء التراجع عن التغييرات بعد كل اختبار، مع الحفاظ على قاعدة البيانات الخاصة بك في نفس الحالة تمامًا في كل مرة.والأمر سهل مثل إضافة السمة [Rollback].

جانب آخر لطيف في MbUnit هو أن بناء الجملة الخاص به مطابق تقريبًا لـ NUnit، لذلك إذا كان لديك سرير اختبار كامل موجود بالفعل ضمن NUnit، فيمكنك فقط تبديل المراجع دون الحاجة إلى تغيير أي رمز (كثيرًا؟).

يبدو أن xUnit.net يقدم طريقة مختلفة قليلاً لـ N/MB/MS/Unit، وهو أمر مثير للاهتمام.

أثناء بحثي عن حل يشبه rspec (لأنني أحب rspec)، صادفت ذلك أيضًا نسبيك, ، والذي يبدو مليئًا بالألفاظ بعض الشيء، ولكن ممزوجًا بـ ملحقات نسبيك الملحق لاستخدام أساليب التمديد C#3، يبدو جميلًا جدًا.

أستخدم ما يلي:

TestDriven.NET - إضافة اختبار الوحدة لبرنامج Visual Studio

عازل تايموك- إطار عمل ساخر لاختبار وحدة .Net

وحدة - إطار اختبار وحدة مفتوح المصدر موجود في C#.

هذا سؤال قديم ولكن قد تجد أنه من المثير للاهتمام أن Gallio v3.1 يدعم الآن RSpec عبر IronRuby.

انا يعجبني TestDriven.NET (على الرغم من أنني أستخدم ReSharper) وأنا سعيد جدًا به XUnit.net.إنه يستخدم الحقائق بدلاً من الاختبارات التي لا يحبها الكثير من الناس ولكني أحب الاختلاف في المصطلحات.من المفيد التفكير في مجموعة من الحقائق التي يمكن إثباتها تلقائيًا حول برنامجك ومعرفة أي منها تنتهكه عندما تقوم بإجراء تغيير.

انتبه أن يأتي الآن Visual Studio 2008 Professional (والإصدارات الأحدث) مزودًا باختبار الوحدة المتكامل (كان متاحًا فقط مع إصدارات نظام الفريق) وقد يكون مناسبًا لاحتياجاتك.

لقد قمت بعمل مثال صغير لاختبار .net lib باستخدام IronRuby:http://khebbie.dk/post/2008/08/Example-of-using-ironRubys-mini_rspec-library.aspx

اعتدت على استخدام NUnit، لكنني قمت بالتبديل إلى MbUnit لأنه يحتوي على المزيد من الميزات.أنا أحب RowTest.يتيح لك تحديد معايير اختباراتك.على الرغم من ذلك، تتمتع NUnit بدعم أفضل للأدوات.أنا أستخدم ReSharper لتشغيل اختبارات MbUnit.لقد واجهت مشاكل مع TestDriven.NET في تشغيل أساليب الإعداد الخاصة بي لـ MbUnit.

هذا حقًا رأي شخصي من جهتي (أعتقد أن هذا زائد عن الحاجة لأنه منتدى).NUnit، MSTest، إلخ، كلها تفعل نفس الشيء إلى حد كبير.ومع ذلك أجد NMock لا غنى عنه.

إن NMock أو أي حزمة محاكاة ليست اختبارًا للوحدة ولكنها تجعل إجراء اختبار الوحدة أسهل بكثير مما قد يكون كذلك.

انا يعجبني مبيونيت, ، إيه، جاليو.الأهم بالنسبة لي هو وجود دعم جيد للأدوات داخل Visual Studio.لذلك أستخدم ريشاربر, ، والتي لديها عداء اختبار MbUnit.يبدو أن الكثير من الناس يحبون ذلك TestDriven.NET باعتباره عداء الاختبار أيضًا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top