وحدة 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.

انظر أيضاً

مراجع

فهرس

  • هانت، أندرو؛ توماس، ديفيد (2007). اختبار الوحدات العملي في لغة سي شارب باستخدام NUnit، الطبعة الثانية. مكتبة براغماتيك (رالي)، 2007. ISBN 0-9776166-7-3.
  • نيوكيرك، جيم؛ فورونتسوف، أليكسي (2004). تطوير البرمجيات الموجه بالاختبار في مايكروسوفت دوت نت. مطبعة مايكروسوفت (ريدموند)، 2004. ISBN 0-7356-1948-4.
  • هاميلتون، بيل (2004). المرجع الجيب لـ NUnit . أورايلي (كامبريدج)، 2004. ISBN 0-596-00739-6.