يُبلغ SpeedTrap عن اختبارات PHPUnit البطيئة التشغيل مباشرةً في وحدة التحكم.
هناك العديد من العوامل التي تؤثر على وقت تنفيذ الاختبار. سيؤدي عدم عزل الاختبار بشكل صحيح عن زمن الاستجابة المتغير (قاعدة البيانات، والشبكة، وما إلى ذلك) وحتى الحمل الأساسي على جهاز الاختبار إلى تقلب أوقات تنفيذ الاختبار.
يساعد SpeedTrap في تحديد الاختبارات البطيئة ولكن لا يمكنه تفسير سبب بطء هذه الاختبارات. فكر في استخدام Blackfire.io لتكوين ملف تعريف لمجموعة الاختبار لتحديد التعليمات البرمجية البطيئة على وجه التحديد.
يتم تثبيت SpeedTrap باستخدام Composer. أضفه باعتباره تبعية require-dev
:
composer require --dev johnkary/phpunit-speedtrap
قم بالتمكين بجميع الإعدادات الافتراضية عن طريق إضافة الكود التالي إلى ملف phpunit.xml
الخاص بمشروعك:
<phpunit bootstrap="vendor/autoload.php"> ... <الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </الامتدادات> </phpunit>
الآن قم بتشغيل مجموعة الاختبار. إذا تجاوزت عملية تنفيذ اختبار واحدة أو أكثر حد البطء (500 مللي ثانية افتراضيًا)، فسيقوم SpeedTrap بالإبلاغ عن تلك الاختبارات في وحدة التحكم بعد اكتمال جميع الاختبارات.
يدعم SpeedTrap أيضًا هذه المعلمات:
SlowThreshold - عدد المللي ثانية عندما يعتبر الاختبار "بطيئًا" (الافتراضي: 500 مللي ثانية)
reportLength - عدد الاختبارات البطيئة المضمنة في التقرير (الإعداد الافتراضي: 10 اختبارات)
يتم تعيين كل معلمة في phpunit.xml
:
<phpunit bootstrap="vendor/autoload.php"><!-- ... تكوينات المجموعة الأخرى هنا ... --><الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap"> <الوسائط> <صفيف> <العنصر الرئيسي = "slowThreshold"> <عدد صحيح>500</عدد صحيح> </العنصر> <العنصر الرئيسي = "طول التقرير"> <عدد صحيح>10</عدد صحيح> </العنصر> </صفيف> </الوسائط> </امتداد> </الامتدادات> </phpunit>
تحتوي بعض المشاريع على عدد قليل من الاختبارات المعقدة التي تستغرق وقتًا طويلاً للتشغيل. من الممكن تعيين حد بطء مختلف لحالات الاختبار الفردية.
يمكن للتعليق التوضيحي @slowThreshold
تعيين حد بطء مخصص لكل حالة اختبار. قد يكون هذا الرقم أعلى أو أقل من الحد الافتراضي ويتم استخدامه بدلاً من الحد الافتراضي لهذا الاختبار المحدد.
يمتد فئة SomeTestCase إلى PHPUnitFrameworkTestCase {/** * @slowThreshold 5000 */ public function testLongRunningProcess() {// الكود الذي يستغرق وقتًا أطول للتنفيذ} }
لن يؤدي إعداد @slowThreshold 0
إلى الإبلاغ عن هذا الاختبار على أنه بطيء أبدًا.
ملفات تعريف SpeedTrap للاختبارات البطيئة عند تمكينها في phpunit.xml. لكن استخدام متغير البيئة المسمى PHPUNIT_SPEEDTRAP
يمكنه تمكين الامتداد أو تعطيله:
$ PHPUNIT_SPEEDTRAP="disabled" ./vendor/bin/phpunit
يحظى Travis CI بشعبية كبيرة في إجراء الاختبارات في السحابة بعد دفع التعليمات البرمجية الجديدة إلى المستودع.
الخطوة 1) قم بتمكين SpeedTrap في phpunit.xml، ولكن قم بتعيين PHPUNIT_SPEEDTRAP="disabled"
لتعطيل التوصيف عند إجراء الاختبارات.
<phpunit bootstrap="vendor/autoload.php"> ... <فب> <env name="PHPUNIT_SPEEDTRAP" value="disabled" /> </php> <الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </الامتدادات> </phpunit>
الخطوة 2) قم بتكوين .travis.yml
باستخدام PHPUNIT_SPEEDTRAP="enabled"
لملف التعريف للاختبارات البطيئة عند التشغيل على Travis CI:
اللغة: phpphp: - 7.3 إنف: - PHPUNIT_SPEEDTRAP = "ممكّن"
الخطوة 3) عرض مخرجات بناء Travis CI وقراءة تقرير البطء المطبوع في وحدة التحكم.
وثائق ترافيس سي آي – متغيرات البيئة
الخطوة 1) تمكين SpeedTrap في phpunit.xml. سيتم إخراج تقرير البطء أثناء كافة عمليات تنفيذ مجموعة الاختبار.
<phpunit bootstrap="vendor/autoload.php"> ... <الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </الامتدادات> </phpunit>
الخطوة 2) قم بتكوين .travis.yml
باستخدام PHPUNIT_SPEEDTRAP="disabled"
لإيقاف تشغيل التوصيف عند التشغيل على Travis CI:
اللغة: phpphp: - 7.3 إنف: - PHPUNIT_SPEEDTRAP = "معطل"
الخطوة 3) عرض مخرجات بناء Travis CI والتأكد من عدم طباعة تقرير البطء في وحدة التحكم.
يكون هذا مفيدًا عندما تريد فقط تحديد مواصفات الاختبارات البطيئة من حين لآخر.
الخطوة 1) قم بإعداد phpunit.xml لتمكين SpeedTrap، ولكن قم بتعطيل ملف تعريف البطء عن طريق تعيين PHPUNIT_SPEEDTRAP="disabled"
مثل هذا:
<phpunit bootstrap="vendor/autoload.php"> ... <فب> <env name="PHPUNIT_SPEEDTRAP" value="disabled" /> </php> <الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </الامتدادات> </phpunit>
الخطوة 2) عند تنفيذ phpunit
من سطر الأوامر، قم بتمكين تحديد ملفات تعريف البطء فقط لهذا التشغيل عن طريق تمرير متغير البيئة PHPUNIT_SPEEDTRAP="enabled"
مثل هذا:
$ PHPUNIT_SPEEDTRAP=ممكّن ./vendor/bin/phpunit
يأتي Symfony Framework مع الحزمةsymfony/phpunit-bridge التي تثبت نسختها الخاصة من PHPUnit وتتجاهل ما تم تعريفه في ملف Composer.json أو Composer.lock الخاص بمشروعك. راجع إصدارات PHPUnit التي تم تثبيتها باستخدام الأمر ls vendor/bin/.phpunit/
يسمح Symfony/phpunit-bridge لمتغير البيئة SYMFONY_PHPUNIT_REQUIRE
بتعريف تبعيات إضافية أثناء تثبيت phpunit.
أسهل طريقة لتعيين متغيرات البيئة للبرنامج النصي simple-phpunit
هي عبر phpunit.xml.dist:
<phpunit bootstrap="vendor/autoload.php"> <فب> <env name="SYMFONY_PHPUNIT_REQUIRE" value="johnkary/phpunit-speedtrap:^4"/> <env name="SYMFONY_PHPUNIT_VERSION" value="9"/> </php> <الامتدادات> <extension class="JohnKaryPHPUnitExtensionSpeedTrap" /> </الامتدادات> </phpunit>
باستخدام المثال أعلاه، سيؤدي تشغيل vendor/bin/simple-phpunit
الآن إلى تثبيت أحدث إصدار من PHPUnit 9 وسيتطلب أحدث إصدار من phpunit-speedtrap v4.
اتبع هذه الخطوات لإضافة ميزات جديدة أو تطوير شوكة خاصة بك:
# Get source code (or replace with your fork URL) $ git checkout https://github.com/johnkary/phpunit-speedtrap.git phpunit-speedtrap # Install dev dependencies $ cd phpunit-speedtrap $ composer install # Run test suite to verify code runs as expected $ vendor/bin/phpunit
تم استلهام SpeedTrap من خيار --profile
الخاص بـ RSpec والذي يعرض تعليقات حول الاختبارات البطيئة.
phpunit-speedtrap متاح بموجب ترخيص MIT.