وحدة NUnit
NUnit هو إطار عمل مفتوح المصدر لاختبار الوحدات لـ .NET و .NET Framework و Mono . ويؤدي نفس الغرض الذي يؤديه JUnit في عالم Java ، وهو واحد من العديد من أطر العمل في عائلة xUnit .
سمات
- يمكن تشغيل الاختبارات من خلال مشغل وحدة التحكم، داخل Visual Studio من خلال محول الاختبار، [ 1 ] أو من خلال مشغلات الطرف الثالث.
- يمكن إجراء الاختبارات بالتوازي. [ 2 ]
- دعم قوي للاختبارات القائمة على البيانات. [ 3 ]
- يدعم منصات متعددة بما في ذلك .NET Core ، [ 4 ] و Xamarin Mobile ، [ 5 ] و Compact Framework ، [ 6 ] و Silverlight . [ 7 ]
- يمكن إضافة كل حالة اختبار إلى فئة واحدة أو أكثر، للسماح بتشغيلها بشكل انتقائي. [ 8 ]
توفر NUnit مشغلًا طرفيًا (nunit3-console.exe) يُستخدم لتنفيذ الاختبارات دفعةً واحدة. يعمل هذا المشغل من خلال محرك اختبار NUnit، الذي يُمكّنه من تحميل الاختبارات واستكشافها وتنفيذها. عند تشغيل الاختبارات في عملية منفصلة، يستخدم المحرك برنامج nunit-agent لتنفيذها.
يمكن استخدام مُشغّل NUnitLite في الحالات التي يكون فيها مُشغّل أبسط أكثر ملاءمة. فهو يسمح للمطورين بإنشاء اختبارات ذاتية التنفيذ.
التأكيدات
توفر NUnit مجموعة غنية من التأكيدات كطرق ثابتة للفئة Assert. إذا فشل أحد التأكيدات، فلن تُرجع استدعاء الطريقة أي قيمة، وسيتم الإبلاغ عن خطأ. إذا احتوى الاختبار على عدة تأكيدات، فلن يتم تنفيذ أي تأكيدات تلي التأكيد الفاشل. لهذا السبب، يُفضل عادةً تجربة تأكيد واحد لكل اختبار.
يدعم Nunit 3.x التأكيدات المتعددة.
[اختبار] public void ComplexNumberTest () { ComplexNumber result = SomeCalculation ();Assert.Multiple (() => { Assert.AreEqual ( 5.2 , result.RealPart , " الجزء الحقيقي " ) ; Assert.AreEqual ( 3.9 , result.ImaginaryPart , " الجزء التخيلي " ) ; } ) ; }كلاسيكي
قبل إصدار NUnit 2.4، كان يُستخدم أسلوب منفصل من Assertالفئة لكل تأكيد مختلف. ولا يزال هذا الأسلوب مدعومًا في NUnit، نظرًا لتفضيل الكثيرين له.
يمكن استدعاء كل دالة تحقق بدون رسالة، أو برسالة نصية بسيطة، أو برسالة ووسائط. في الحالة الأخيرة، يتم تنسيق الرسالة باستخدام النص والوسائط المُقدمة.
// تأكيدات المساواة Assert.AreEqual ( object expected , object actual ) ; Assert.AreEqual ( object expected , object actual , string message , params object [ ] parms ) ;Assert.AreNotEqual ( object expected , object actual ) ; Assert.AreNotEqual ( object expected , object actual , string message , params object [ ] parms ) ;// تأكيدات الهوية Assert.AreSame ( object expected , object actual ) ; Assert.AreSame ( object expected , object actual , string message , params object [ ] parms ) ;Assert.AreNotSame ( object expected , object actual ) ; Assert.AreNotSame ( object expected , object actual , string message , params object [ ] parms ) ;// تأكيدات الشرط // (لتبسيط الأمر، تم حذف الطرق ذات التوقيعات النصية.) Assert.IsTrue ( bool condition ) ; Assert.IsFalse ( bool condition ) ;Assert.IsNull ( object anObject ) ; Assert.IsNotNull ( object anObject ) ;Assert.IsNaN ( double aDouble ) ;Assert.IsEmpty ( string aString ) ; Assert.IsNotEmpty ( string aString ) ;Assert.IsEmpty ( ICollection collection ) ; Assert.IsNotEmpty ( ICollection collection ) ;قائم على القيود
ابتداءً من NUnit 2.4، تم تقديم نموذج جديد قائم على القيود . يستخدم هذا النموذج طريقة واحدة من Assertالفئة لجميع التأكيدات، مع تمرير Constraintكائن يحدد الاختبار المراد إجراؤه. يستخدم NUnit الآن هذا النموذج القائم على القيود داخليًا لجميع التأكيدات. وقد أُعيد تنفيذ طرق النموذج التقليدي باستخدام هذا النموذج الجديد.
مثال
مثال على تجهيزات اختبار NUnit :
using NUnit.Framework ; [TestFixture] public class ExampleTestOfNUnit { [Test] public void TestMultiplication () { Assert.AreEqual ( 4 , 2 * 2 , "Multiplication" ); // بشكل مكافئ، منذ الإصدار 2.4 ، يوفر NUnit صيغة تأكيد جديدة وأكثر سهولة تعتمد على كائنات القيود // [ http://www.nunit.org/index.php?p=constraintModel&r=2.4.7]: Assert.That ( 2 * 2 , Is.EqualTo ( 4 ) , " Multiplication constraint-based" ); } }// يوضح المثال التالي طرقًا مختلفة لكتابة نفس اختبار الاستثناء.[TestFixture] public class AssertThrowsTests { [Test] public void Tests () { // .NET 1.x Assert . Throws ( typeof ( ArgumentException ), new TestDelegate ( MethodThatThrows )); // .NET 2.0 Assert . Throws < ArgumentException > ( MethodThatThrows ); Assert . Throws < ArgumentException > ( delegate { throw new ArgumentException (); });// باستخدام C# 3.0 Assert.Throws <ArgumentException> ( ( ) => { throw new ArgumentException ( ) ; } ) ; } void MethodThatThrows ( ) { throw new ArgumentException (); } }// يوضح هذا المثال استخدام القيمة المرجعة لإجراء تحقق إضافي من الاستثناء.[TestFixture] public class UsingReturnValue { [Test] public void TestException () { MyException ex = Assert . Throws < MyException > ( delegate { throw new MyException ( "message" , 42 ); }); Assert . That ( ex . Message , Is . EqualTo ( "message" )); Assert . That ( ex . MyParam , Is . EqualTo ( 42 )); } }// يقوم هذا المثال بنفس الشيء باستخدام التحميل الزائد الذي يتضمن قيدًا.[TestFixture] public class UsingConstraint { [Test] public void TestException () { Assert . Throws ( Is . Typeof < MyException > () . And . Message . EqualTo ( "message" ) . And . Property ( "MyParam" ). EqualTo ( 42 ), delegate { throw new MyException ( "message" , 42 ); }); } }يكتشف إطار عمل NUnit الطريقة ExampleTestOfNUnit.TestMultiplication()تلقائيًا عن طريق الانعكاس .
الإضافات
FireBenchmarks هو إضافة قادرة على تسجيل وقت تنفيذ اختبارات الوحدات وإنشاء تقارير أداء بتنسيقات XML و CSV و XHTML مع رسوم بيانية وتتبع تاريخي. يتمثل هدفها الرئيسي في تمكين المطورين أو الفرق العاملة بمنهجية Agile من دمج مقاييس الأداء والتحليلات في بيئة اختبار الوحدات ، للتحكم في تطور نظام البرمجيات ومراقبته من حيث التعقيد الخوارزمي وحمل موارد النظام.
يُعدّ NUnit.Forms إضافةً إلى إطار عمل NUnit الأساسي، وهو مفتوح المصدر أيضًا. ويركّز تحديدًا على توسيع نطاق NUnit ليشمل اختبار عناصر واجهة المستخدم في Windows Forms . اعتبارًا من يناير 2013، كان NUnit.Forms في مرحلة تجريبية (ألفا)، ولم تُصدر أي إصدارات منه منذ مايو 2006.
NUnit.ASP هو امتداد متوقف [ 9 ] لإطار عمل NUnit الأساسي، وهو مفتوح المصدر أيضًا. ويركز تحديدًا على توسيع NUnit ليتمكن من التعامل مع اختبار عناصر واجهة المستخدم في ASP.NET.
انظر أيضاً
- أتمتة الاختبار
- قائمة بأطر اختبار الوحدات للغات برمجة .NET (تتضمن عمودًا يشير إلى تلك التي تعتمد على xUnit)
- XUnit.net
- وحدة مشتركة
مراجع
- ↑ "محول اختبار NUnit 3" .
- ↑ "الخاصية القابلة للتوازي" . GitHub .
- ↑ "TestCaseData" . GitHub .
- ↑ بروس، روب (2015-11-04). "اختبار .NET Core باستخدام NUnit 3" .
- ↑ براوس، روب (2015-03-25). "NUnit 3.0 Test Runner for Android and iOS" .
- ↑ "NUnit الإصدار 3 للإطار المضغوط" .
- ↑ "NUnit الإصدار 3 لـ SilverLight 5.0" .
- ↑ "CategoryAttribute" . GitHub . تم الاسترجاع في 15-12-2015 .
- ↑ "الصفحة الرئيسية لموقع NUnit.ASP" . SourceForge . تم الاطلاع عليه بتاريخ 15 أبريل 2008 .
فهرس
- هانت، أندرو؛ توماس، ديفيد (2007). اختبار الوحدات العملي في لغة سي شارب باستخدام NUnit، الطبعة الثانية. مكتبة براغماتيك (رالي)، 2007. ISBN 0-9776166-7-3.
- نيوكيرك، جيم؛ فورونتسوف، أليكسي (2004). تطوير البرمجيات الموجه بالاختبار في مايكروسوفت دوت نت. مطبعة مايكروسوفت (ريدموند)، 2004. ISBN 0-7356-1948-4.
- هاميلتون، بيل (2004). المرجع الجيب لـ NUnit . أورايلي (كامبريدج)، 2004. ISBN 0-596-00739-6.
روابط خارجية
- الموقع الرسمي
- موقع جيت هاب
- موقع منصة الإطلاق (لم يعد يتم صيانته)
- تطوير البرمجيات الموجه بالاختبار باستخدام NUnit و Test-driven.NET (مؤرشف بتاريخ 15 مايو 2008 على موقع Wayback Machine) - عرض توضيحي بالفيديو
- الصفحة الرئيسية لـ NUnit.Forms
- الصفحة الرئيسية لـ NUnitAsp
- تقدم مقالة " تحسين جودة التطبيقات باستخدام تطوير البرمجيات الموجه بالاختبار" مقدمةً عن تطوير البرمجيات الموجه بالاختبار مع أمثلة عملية باستخدام NUnit
- أداة مفتوحة المصدر، قادرة على تنفيذ اختبارات NUnit بالتوازي. مؤرشفة بتاريخ 18 نوفمبر 2013 على موقع Wayback Machine.
- تشارلي بول ، مطور مشارك
- روب براوس ، مطور مشارك
- سيمون بوسولي ، مطور مشارك
- برنامج .NET
- البرمجة المتطرفة
- أطر اختبار الوحدات
- برنامج مجاني مكتوب بلغة سي شارب
- برنامج مرخص بموجب ترخيص MIT
