يتم استدعاء أداة اختبار سطر الأوامر PHPUnit من خلال الأمر phpunit. يوضح التعليمة البرمجية التالية كيفية إجراء الاختبارات من خلال أداة اختبار سطر الأوامر PHPUnit.
phpunitArrayTest
PHPUnit 2.3.0 بقلم سيباستيان بيرجمان
الوقت: 0.067288
موافق (اختباران)
لكل اختبار، تقوم أداة اختبار سطر الأوامر PHPUnit بطباعة حرف يشير إلى العملية:
· يطبع الاختبار الناجح ".".
· عند تشغيل أسلوب الاختبار، يحدث فشل في التأكيد ويتم طباعة "F".
· عند تشغيل طريقة الاختبار يحدث خطأ ويتم طباعة الحرف "E".
· لم يكتمل الاختبار أو لم تتم طباعة "أنا" في الاختبار (راجع فصل "الاختبارات غير المكتملة" في نهاية هذا الكتاب).
يمكن لـ PHPUnit التمييز بين حالات الفشل والأخطاء. الفشل هو انتهاك لتأكيد PHPUnit، والخطأ هو استثناء غير متوقع أو خطأ PHP. في بعض الأحيان يكون هذا التمييز مفيدًا لأن إصلاح الأخطاء أسهل من إصلاح الفشل. إذا كانت لديك قائمة طويلة من المشكلات، فمن الجيد أن تقوم بحل جميع الأخطاء أولاً ثم معرفة ما إذا كانت هناك أي حالات فشل باقية.
دعونا نلقي نظرة على بعض خيارات أداة اختبار سطر أوامر التعليمات البرمجية أدناه:
phpunit --help
PHPUnit 2.3.0 بواسطة سيباستيان بيرجمان
الاستخدام: phpunit [تبديلات] UnitTest [UnitTest.php]
--coverage-data <file> اكتب بيانات تغطية التعليمات البرمجية بتنسيق أولي إلى ملف.
--coverage-html <file> اكتب بيانات تغطية التعليمات البرمجية بتنسيق HTML إلى الملف.
--coverage-text <file> اكتب بيانات تغطية التعليمات البرمجية بتنسيق نصي إلى ملف.
--testdox-html <file> اكتب وثائق Agile بتنسيق HTML إلى الملف.
--testdox-text <file> اكتب وثائق رشيقة بتنسيق نص إلى ملف.
--log-xml <file> سجل تقدم الاختبار بتنسيق XML إلى الملف.
--loader <loader> تطبيق TestSuiteLoader للاستخدام.
--skeleton قم بإنشاء فئة UnitTest للهيكل العظمي للوحدة في Unit.php.
- انتظر انتظار الضغط على المفتاح بعد كل اختبار.
--help يطبع معلومات الاستخدام هذه.
--version يطبع الإصدار ويخرج.
phpunit UnitTest
بتشغيل الاختبارات التي توفرها الفئة UnitTest، والتي يجب تعريفها في الملف المصدر UnitTest.php.
يجب أن ترث الفئة UnitTest فئة PHPUnit2_Framework_TestCase، أو توفر مجموعة طرق ثابتة عامة وتعيد فئة كائن PHPUnit2_Framework_Test (على سبيل المثال، مثيل للفئة PHPUnit2_Framework_TestSuite)
phpunit UnitTest UnitTest.php
يقوم بتشغيل الاختبار الذي توفره الفئة UnitTest، والذي تم تعريفه في الأمر في الملف المصدر المحدد (UnitTest.php).
--coverage-data، --coverage-html، و --coverage-text
التحكم في تحليل وجمع معلومات تغطية التعليمات البرمجية لتشغيل الاختبارات (راجع قسم تحليل تغطية التعليمات البرمجية في نهاية هذا الكتاب)
--testdox-html و --testdox- text
ينشئ وثائق سريعة لتشغيل الاختبارات بتنسيق HTML أو تنسيق نص عادي (راجع فصل "الاستخدامات الأخرى للاختبار" في نهاية هذا الكتاب)
--log-xml
ينشئ ملفات سجل بتنسيق XML لإجراء الاختبارات.
يوضح المثال التالي ملف سجل XML الذي تم إنشاؤه للاختبارات في ArrayTest.
<?xml version="1.0" encoding="UTF-8"?>
<أجنحة الاختبار>
<testsuite name="ArrayTest" الاختبارات = "2" حالات الفشل = "0" أخطاء = "0" الوقت = "0.020026">
<اسم حالة الاختبار = "testNewArrayIsEmpty" فئة = "ArrayTest" الوقت = "0.014449"/>
<testcase name="testArrayContainsAnElement" class="ArrayTest" time="0.005577"/>
</testsuite>
</testsuites>
يتم إنشاء ملف سجل XML التالي لاختبارين من فئة الاختبار المسماة FailErrorTest، أحدهما هو testFailure والآخر هو testError. يوضح هذا كيفية تمثيل حالات الفشل والأخطاء بشكل منفصل.
<?xml version="1.0" encoding="UTF-8"?>
<أجنحة الاختبار>
<testsuite name="FailureErrorTest" الاختبارات = "2" حالات الفشل = "1" أخطاء = "1" الوقت = "0.013603">
<اسم حالة الاختبار = "testFailure" فئة = "FailureErrorTest" الوقت = "0.011872">
< رسالة فشل = "" نوع = "PHPUnit2_Framework_AssertionFailedError"></failure>
</حالة الاختبار>
<اسم حالة الاختبار = "testError" فئة = "FailureErrorTest" الوقت = "0.001731">
<رسالة خطأ = "" نوع = "استثناء"></خطأ>
</حالة الاختبار>
</testsuite>
</testsuites>
--loader
يحدد مُحمل مجموعة الاختبار الذي سيتم استخدامه.
يبحث مُحمل مجموعة الاختبار القياسي عن الملفات المصدر في دليل العمل الحالي وفي المسار المحدد بواسطة توجيه تكوين include_path الخاص بـ PHP. وفقا لقواعد تسمية PEAR، فإن الملف المصدر المعين لاسم فئة في النموذج Project_Package_Class هو Project/Package/Class.php.
يقوم--skeleton
بإنشاء هيكل عظمي لفئة حالة اختبار تسمى UnitTest (في الملف UnitTest.php) للفئة Unit (في الملف Unit.php). لكل طريقة من أساليب الفئة الأصلية، يتم توفير حالة اختبار غير مكتملة في فئة حالة الاختبار التي تم إنشاؤها (راجع قسم "الاختبارات غير المكتملة" في نهاية هذا الكتاب).
يوضح المثال التالي كيفية إنشاء فئة اختبار هيكلية لفئة تسمى Sample.
phpunit - عينة الهيكل العظمي
PHPUnit 2.3.0 بواسطة سيباستيان بيرجمان.
كتب الهيكل العظمي لفئة الاختبار لعينة ل
SampleTest.php.
اختبار عينة phpunit
PHPUnit 2.3.0 بواسطة سيباستيان بيرجمان.
أنا
الوقت: 0.007268
كانت هناك حالة اختبار واحدة غير مكتملة:
1) testSampleMethod(SampleTest)
حسنًا، لكن حالات الاختبار غير مكتملة!!!
تشغيل الاختبارات: 1، حالات الاختبار غير المكتملة: 1.
عند كتابة اختبارات للتعليمات البرمجية الموجودة، يجب عليك تكرار العديد من مقتطفات التعليمات البرمجية نفسها، مثل:
public function testSampleMethod() {}
يمكن أن تساعدك PHPUnit في تحليل التعليمات البرمجية الموجودة وإنشاء A إطار لفئات حالة الاختبار.
- انتظر
في نهاية كل اختبار، انتظر حتى تضغط على المفتاح. يعد هذا مفيدًا بشكل خاص إذا كنت تقوم بإجراء اختبارات في نافذة يتم فيها تشغيل الاختبار فقط في جميع الأوقات.
نصيحة: عندما يكون هناك خطأ في بناء جملة PHP في الكود الذي يتم اختباره، فسيتم الخروج من اختبار واجهة النص مباشرة دون إخراج أي رسالة خطأ. يقوم مُحمل مجموعة الاختبار القياسي بفحص الملفات المصدر لمجموعة الاختبار بحثًا عن أخطاء في بناء جملة PHP، ومع ذلك، فهو لا يتحقق من الملفات المصدر المضمنة في مجموعة الاختبار بحثًا عن أخطاء في بناء الجملة. ستعالج الإصدارات المستقبلية من PHPUnit هذه المشكلة باستخدام فئات مترجم PHP ذات وضع الحماية.