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

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

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

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

في أي مشروع Visual Studio يستخدم Spring، يجب القيام بأمرين بشكل منهجي:
- وضع الملفات المذكورة أعلاه في المجلد [bin] الخاص بالمشروع
- إضافة مرجع إلى التجميع [Spring.Core.dll] إلى المشروع
8.2. أين يمكن العثور على Nunit؟
الموقع الرئيسي لـ Nunit هو [http://www.nunit.org/]. الإصدار المتوفر في أبريل 2005 هو 2.2.0:

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


يشير السهم أعلاه إلى الأداة الرسومية للاختبار. كما أضاف التثبيت عناصر جديدة إلى مستودع التجميعات في Visual Studio، والتي سنكتشفها الآن.
لنقم بإنشاء مشروع Visual Studio التالي:
توجد الفئة التي يتم اختبارها في [Personne.vb]:

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] في مستكشف الحلول:
![]() | ![]() |

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

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

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

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

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

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

يُرمز إلى نجاح اختبار إحدى الطرق بنقطة خضراء بجانب الطريقة في النافذة اليسرى. أما الفشل في الاختبار فيُرمز إليه بنقطة حمراء.
تُظهر النافذة [Console.Out] الموجودة على اليمين عروض الشاشة الناتجة عن الطرق التي تم اختبارها. هنا، أردنا متابعة سير الاختبار:
- يُظهر السطر 1 أن طريقة السمة <Setup()> يتم تنفيذها قبل الاختبار
- السطران 2 و3 ناتجان عن الطريقة [demo] التي تم اختبارها (انظر الكود أعلاه)
- يُظهر السطر 4 أن طريقة السمة <TearDown()> تُنفَّذ بعد الاختبار

