Skip to content

8. الملاحق

8.1. أين يمكن العثور على Spring؟

الموقع الرئيسي لـ Spring هو [http://www.springframework.org/]. وهو موقع إصدار Java. أما الإصدار .NET قيد التطوير (أبريل 2005) فيوجد على الرابط [http://www.springframework.net/].

Image

موقع التنزيل موجود على الرابط [SourceForge]:

Image

بمجرد تنزيل ملف zip أعلاه، قم بفك ضغطه:

Image

في هذا المستند، لم نستخدم سوى محتويات المجلد [bin]:

Image

في أي مشروع Visual Studio يستخدم Spring، يجب القيام بأمرين بشكل منهجي:

  • وضع الملفات المذكورة أعلاه في المجلد [bin] الخاص بالمشروع
  • إضافة مرجع إلى التجميع [Spring.Core.dll] إلى المشروع

8.2. أين يمكن العثور على Nunit؟

الموقع الرئيسي لـ Nunit هو [http://www.nunit.org/]. الإصدار المتوفر في أبريل 2005 هو 2.2.0:

Image

قم بتنزيل هذه النسخة وتثبيتها. يؤدي التثبيت إلى إنشاء مجلد ستجد فيه النسخة التجريبية ذات الواجهة الرسومية:

ما يثير الاهتمام موجود في المجلد [bin]:

Image

Image

يشير السهم أعلاه إلى الأداة الرسومية للاختبار. كما أضاف التثبيت عناصر جديدة إلى مستودع التجميعات في Visual Studio، والتي سنكتشفها الآن.

لنقم بإنشاء مشروع Visual Studio التالي:

توجد الفئة التي يتم اختبارها في [Personne.vb]:

Image

Public Class Personne

     ' الحقول الخاصة
    Private _nom As String
    Private _age As Integer

     ' منشئ افتراضي
    Public Sub New()
    End Sub

     ' الخصائص المرتبطة بالحقول الخاصة
    Public Property nom() As String
        Get
            Return _nom
        End Get
        Set(ByVal Value As String)
            _nom = Value
        End Set
    End Property

    Public Property age() As Integer
        Get
            Return _age
        End Get
        Set(ByVal Value As Integer)
            _age = Value
        End Set
    End Property

     ' سلسلة الهوية
    Public Overrides Function tostring() As String
        Return String.Format("[{0},{1}]", nom, age)
    End Function

     ' طريقة init
    Public Sub init()
        Console.WriteLine("init personne {0}", Me.ToString)
    End Sub

     ' طريقة الإغلاق
    Public Sub close()
        Console.WriteLine("destroy personne {0}", Me.ToString)
    End Sub

End Class

توجد فئة الاختبار في [NunitTestPersonne-1.vb]:

Imports System
Imports NUnit.Framework

<TestFixture()> _
 Public Class NunitTestPersonne

     ' الكائن قيد الاختبار
    Private personne1 As Personne

    <SetUp()> _
    Public Sub init()
         ' يتم إنشاء مثيل لـ Personne
        personne1 = New Personne
         ' سجل
        Console.WriteLine("setup test")
    End Sub

    <Test()> _
    Public Sub demo()
         ' سجل الشاشة
        Console.WriteLine("début test")
         ' تهيئة personne1
        With personne1
            .nom = "paul"
            .age = 10
        End With
         ' اختبارات
        Assert.AreEqual("paul", personne1.nom)
        Assert.AreEqual(10, personne1.age)
         ' سجل الشاشة
        Console.WriteLine("fin test")
    End Sub

    <TearDown()> _
    Public Sub destroy()
         ' المتابعة
        Console.WriteLine("teardown test")
    End Sub

End Class

هناك عدة أمور جديرة بالملاحظة:

  • تحتوي الطرق على سمات مثل <Setup()>، <TearDown()>، ...
  • ولكي يتم التعرف على هذه السمات، يجب أن:
    • أن يشير المشروع إلى التجميع [nunit.framework.dll]
    • تستورد فئة الاختبار مساحة الأسماء [NUnit.Framework]

يتم الحصول على الإشارة بالنقر بزر الماوس الأيمن على [References] في مستكشف الحلول:

Image

يجب أن يظهر التجميع [nunit.framework.dll] في القائمة المعروضة إذا تم تثبيت [Nunit] بنجاح. يكفي النقر المزدوج على التجميع لإضافته إلى المشروع:

Image

وبعد ذلك، يجب أن تستورد فئة الاختبار [NunitTestPersonne] مساحة الأسماء [NUnit.Framework]:

Imports NUnit.Framework

ثم يجب التعرف على سمات فئة الاختبار [NunitTestPersonne].

  • تشير السمة <Test()> إلى طريقة يجب اختبارها
  • تشير السمة <Setup()> إلى الطريقة التي يجب تنفيذها قبل كل طريقة يتم اختبارها
  • تشير السمة <TearDown()> إلى الطريقة التي يجب تنفيذها بعد كل طريقة يتم اختبارها
  • تسمح الطريقة Assert.AreEqual باختبار تساوي اثنين من entités.Il، وهناك العديد من الطرق الأخرى من النوع Assert.xx.
  • تقوم الأداة المساعدة NUnit بإيقاف تنفيذ الأسلوب الذي يتم اختباره فور فشل أي أسلوب من نوع [Assert] وعرض رسالة خطأ. وإلا، فإنها تعرض رسالة نجاح.

لنقم بتكوين مشروعنا بحيث يقوم بإنشاء DLL:

Image

ستُسمى طريقة DLL التي تم إنشاؤها بـ [nunit-demos-1.dll] وستُوضع افتراضيًا في مجلد [bin] الخاص بالمشروع. لنقم بإنشاء مشروعنا. نحصل في مجلد [bin] على:

Image

لنقم الآن بتشغيل أداة اختبار الرسوميات Nunit. نذكر أنها موجودة في <Nunit>\bin وأن اسمها هو [nunit-gui.exe]. يشير <Nunit> إلى مجلد تثبيت [Nunit]. نحصل على الواجهة التالية:

Image

لنستخدم خيار القائمة [File/Open] لتحميل ملفات DLL و [nunit-demos-1.dll] الخاصة بمشروعنا:

Image

يستطيع [Nunit] اكتشاف فئات الاختبار الموجودة في الملف DLL الذي تم تحميله تلقائيًا. هنا، يعثر على الفئة [NunitTestPersonne]. ثم يعرض جميع الأساليب الخاصة بالفئة التي تحتوي على السمة <Test()>. يتيح الزر [Run] تشغيل الاختبارات على الكائن المحدد. وإذا كان هذا الكائن هو الفئة [NunitTestPersonne]، فسيتم اختبار جميع الطرق المعروضة. يمكن طلب اختبار طريقة معينة عن طريق تحديدها وطلب تنفيذها بواسطة [Run]. لنطلب تنفيذ الفئة:

Image

يُرمز إلى نجاح اختبار إحدى الطرق بنقطة خضراء بجانب الطريقة في النافذة اليسرى. أما الفشل في الاختبار فيُرمز إليه بنقطة حمراء.

تُظهر النافذة [Console.Out] الموجودة على اليمين عروض الشاشة الناتجة عن الطرق التي تم اختبارها. هنا، أردنا متابعة سير الاختبار:

1
2
3
4
setup test
début test
fin test
teardown test
  • يُظهر السطر 1 أن طريقة السمة <Setup()> يتم تنفيذها قبل الاختبار
  • السطران 2 و3 ناتجان عن الطريقة [demo] التي تم اختبارها (انظر الكود أعلاه)
  • يُظهر السطر 4 أن طريقة السمة <TearDown()> تُنفَّذ بعد الاختبار