حتى الآن، لدينا اختباران فقط للمصفوفة والدالة المضمنة sizeof(). عندما نبدأ في اختبار عدد كبير من وظائف array_*()، نحتاج إلى اختبار لكل منها. يمكننا أن نكتب كل واحد من الصفر. ومع ذلك، فإن الطريقة الأفضل هي كتابة البنية التحتية للاختبار مرة واحدة ثم كتابة الأجزاء المختلفة من كل اختبار فقط. PHPUnit هي مثل هذه البنية التحتية.
يوضح المثال 5 كيفية إعادة كتابة الاختبارين في المثال 4 باستخدام PHPUnit.
مثال 5.
اختبار المصفوفة وsizeof()باستخدام
PHPUnit
require_once 'PHPUnit2/Framework/TestCase.php'
؛
اختبار الوظيفة العامةNewArrayIsEmpty() {
// إنشاء تركيبات المصفوفة.
$fixture = Array() ;
// التأكد من أن حجم المصفوفة هو 0.
$this->assertEquals(0, sizeof($fixture));
}
الوظيفة العامة testArrayContainsAnElement() {
// إنشاء تركيبات المصفوفة.
$fixture = Array( );
// إضافة عضو إلى المصفوفة.
$fixture[] = 'العنصر';
// التأكد من أن حجم المصفوفة هو 1.
$this->assertEquals(1, sizeof($fixture));
}
}
?>
يوضح لنا المثال 5 الخطوات الأساسية لاستخدام PHPUnit لكتابة الاختبارات وهي:
1. فئة الاختبار للفئة Class هي ClassTest.
2. يرث ClassTest عمومًا PHPUnit2_ Framework_TestCase.
3. الاختبار هو أسلوب عام بدون معلمات واسمه اختبار*.
4. في طريقة الاختبار، يتم استخدام وظائف التأكيد مثل AssurEquals() (انظر الجدول 6) لتأكيد ما إذا كانت القيمة الفعلية تطابق القيمة المتوقعة.
يحتاج إطار عمل مثل PHPUnit إلى حل عدد من المشكلات، والتي يبدو أن بعضها يتعارض مع بعضها البعض. يجب أيضًا أن تستوفي الاختبارات الشروط التالية:
سهلة التعلم
.يجب أن تكون الاختبارات سهلة التعلم وإلا فلن يتعلم المطورون.
سهلة التطوير.
يجب أن تكون الاختبارات سهلة التطوير وإلا فلن يتطور المطورون.
سهلة القراءة.
يجب ألا يكون لرمز الاختبار أي علاقات خارجية. ، حتى لا يضيع الاختبار نفسه في الفوضى.
سهولة التنفيذ
يجب أن تكون الاختبارات سهلة التنفيذ ويجب التعبير عن نتائج التنفيذ بتنسيق واضح لا لبس فيه.
يجب تنفيذ اختباراتالتنفيذ السريع
بسرعة حتى يمكن تنفيذها آلاف المرات يوميًا.
لا يمكن أن تؤثر اختباراتعزل التعليمات البرمجية
على بعضها البعض، ويجب ألا تؤثر التغييرات في ترتيب الاختبار على النتائج.
يجب
أن نكون قادرين على إجراء الاختبارات في أي مجموعة، وهو ما يعد نتيجة طبيعية لعزل التعليمات البرمجية.
هناك نوعان من الصراعات الرئيسية بين هذه القيود:
سهولة التعلم مقابل سهولة تطوير
الاختبار بشكل عام لا يتطلب المرونة الكاملة للبرمجة. توفر العديد من أدوات الاختبار لغات البرمجة النصية الخاصة بها، ولا تحتوي هذه اللغات إلا على الحد الأدنى من الميزات اللازمة لكتابة الاختبارات، نظرًا لعدم وجود ضوضاء تتداخل مع محتوى الاختبار الخاص بك، فإن الاختبارات المكتوبة سهلة القراءة والكتابة. لكن تعلم أداة جديدة للحياكة ومجموعة من الأدوات لا يزال غير مريح ومربكًا بسهولة.
عزل التعليمات البرمجية مقابل التنفيذ السريع
إذا كنت تريد ألا تؤثر نتائج اختبار ما على اختبار آخر، فأنت بحاجة إلى إنشاء موضوع كامل للاختبار في بداية كل اختبار، ثم استعادة الحالة قبل التشغيل. ومع ذلك، يستغرق إعداد الحالة وقتًا طويلاً (على سبيل المثال، الاتصال بقاعدة البيانات والتهيئة إلى حالة معروفة ببيانات حقيقية).
حل PHPUnit لهذه المشكلة هو استخدام PHP كلغة اختبار. في بعض الأحيان، تكون PHP كاملة الميزات قوية جدًا بحيث لا يمكنها كتابة اختبارات قصيرة ومباشرة، ولكن المبرمجين الذين نستخدمهم لديهم بالفعل خبرة كاملة في PHP. ولأننا بحاجة إلى إقناع المختبرين المترددين، فإن تقليل حاجز كتابة هذه الاختبارات الأولية أمر في غاية الأهمية.