تحذير
يوصى بشدة بالترقية إلى CodeIgniter4.
طريقة أسهل لاستخدام PHPUnit مع CodeIgniter 3.x.
ليس عليك تعديل ملفات CodeIgniter الأساسية على الإطلاق.
يمكنك كتابة اختبارات وحدة التحكم بسهولة.
ربما لا يوجد شيء غير قابل للاختبار.
موثقة بشكل جيد.
PHP 7.3 أو الأحدث
إذا كنت تستخدم Monkey Patching، فيجب عليك استخدام PHP-Parser 4.2 أو إصدار أحدث باعتباره تابعًا للمؤلف.
كود إشعال 3.x
إذا كنت تريد الترقية إلى CodeIgniter4، راجع #361.
PHPUnit 9.3 أو الأحدث
إذا كنت تريد استخدام PHPUnit 9.2 أو إصدار سابق، فيرجى استخدام ci-phpunit-test 2.x.
نتبيانز
انتقل إلى خصائص المشروع > الاختبار > PHPUnit ، وحدد خانة الاختيار استخدام مجموعة الاختبارات المخصصة ، وحدد application/tests/_ci_phpunit_test/TestSuiteProvider.php
.
راجع سجل التغيير.
codeigniter/ ├── application/ │ └── tests/ │ ├── _ci_phpunit_test/ ... don't touch! files ci-phpunit-test uses │ ├── Bootstrap.php ... bootstrap file for PHPUnit │ ├── DbTestCase.php ... DbTestCase class │ ├── TestCase.php ... TestCase class │ ├── controllers/ ... put your controller tests │ ├── libraries/ ... put your library tests │ ├── mocks/ │ │ └── libraries/ ... mock libraries │ ├── models/ ... put your model tests │ └── phpunit.xml ... config file for PHPUnit └── vendor/
قم بتنزيل أحدث ci-phpunit-test
من https://github.com/kenjis/ci-phpunit-test/releases.
قم بفك ضغط مجلد application/tests
ونسخه إلى مجلد application
الخاص بك في مشروع CodeIgniter.
هذا كل شيء.
$ cd /path/to/codeigniter/$ الملحن يتطلب kenjis/ci-phpunit-test:^3.0 --dev
وقم بتشغيل install.php
:
بائع PHP $/kenjis/ci-phpunit-test/install.php --from-composer
يقوم الأمر أعلاه دائمًا بالكتابة فوق الملفات الموجودة.
يجب عليك تشغيله في المجلد الجذر لمشروع CodeIgniter.
يمكنك تحديد application
والمجلد public
الخاص بك باستخدام وسيطات الخيارات، إذا كنت تستخدم مسارات المجلدات المخصصة.
$ PHP بائع/kenjis/ci-phpunit-test/install.php -a <application_dir> -p <public_dir> -t <unittest_dir>
وبالتالي فإن الافتراضي سيكون:
$ PHP بائع/kenjis/ci-phpunit-test/install.php -a application -p public -t application/tests
لكن بعض المسارات قد تكون غير صحيحة، في هذه الحالة، يرجى إصلاحها في الاختبارات/Bootstrap.php.
قم بتنزيل أحدث ci-phpunit-test
من https://github.com/kenjis/ci-phpunit-test/releases.
قم بفك ضغط المجلد application/tests/_ci_phpunit_test
واستبداله.
قراءة سجل التغيير.
$ cd /path/to/codeigniter/$ تحديث الملحن kenjis/ci-phpunit-test
قراءة سجل التغيير.
إذا كنت تقوم بالترقية من إصدار سابق من ci-phpunit-test
الذي أنشأ دليل application/test/_ci_phpunit_test
وتريد الآن استخدام ci-phpunit-test
مباشرة من Composer، فلديك خطوتان إضافيتان:
احذف دليل مكتبة الاختبار القديم:
$ rm -rf /path/to/codeigniter/application/tests/_ci_phpunit_test
قم بتحرير ملف application/tests/Bootstrap.php
. في أسفل قسم "ضبط ثوابت المسار الرئيسي"، أضف ما يلي:
تحديد ('CI_PHPUNIT_TESTPATH'، تنفجر (DIRECTORY_SEPARATOR، [dirname(APPPATH)، 'vendor'، 'kenjis'، 'ci-phpunit-test'، 'application'، 'tests'، '_ci_phpunit_test'] ).DIRECTORY_SEPARATOR);
واستبدل أي إشارات إلى __DIR__ . '/_ci_phpunit_test/
أو TESTPATH . '_ci_phpunit_test
باستخدام CI_PHPUNIT_TESTPATH . '
. (على سبيل المثال، __DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'
سيصبح CI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'
.)
تحتاج إلى تثبيت PHPUnit قبل إجراء الاختبارات.
إذا كنت تستخدم الملحن:
$ الملحن يتطلب phpunit/phpunit --dev
$ cd /path/to/codeigniter/$ sales/bin/phpunit -c application/tests/PHPUnit 9.5.4 بواسطة سيباستيان بيرجمان والمساهمين.... 3 / 3 (100%) الوقت: 00:00.102، الذاكرة: 12.00 MBOK (3 اختبارات، 3 تأكيدات) تم إنشاء تقرير تغطية التعليمات البرمجية بتنسيق Clover XML... [00:00.002]تم إنشاء تقرير تغطية التعليمات البرمجية بتنسيق HTML ... [00:00.012]
لإنشاء تقرير التغطية، هناك حاجة إلى Xdebug.
إذا كنت تريد تشغيل ملف حالة اختبار واحد:
$ البائع/bin/phpunit -c application/tests/application/tests/models/Category_model_test.php
على سبيل المثال، ستكون فئة حالة الاختبار لـ Inventory_model
كما يلي:
<?phpclass Inventory_model_test يمتد إلى TestCase {public function setUp(): void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }الوظيفة العامة test_get_category_list() {$متوقع = [1 => 'كتاب',2 => 'قرص مضغوط',3 => 'قرص DVD', ];$list = $this->obj->get_category_list();foreach ($list as $category) {$this->assertEquals($expected[$category->id], $category->name); } }الوظيفة العامة test_get_category_name() {$actual = $this->obj->get_category_name(1);$expected = 'Book';$this->assertEquals($expected, $actual); } }
على سبيل المثال، ستكون فئة حالة الاختبار لوحدة التحكم الترحيبية كما يلي:
<?phpclass Welcome_test يمتد إلى TestCase {اختبار الوظيفة العامة () {$output = $this->request('GET', 'welcome/index');$this->assertStringContainsString('<title>مرحبًا بك في CodeIgniter</title>', $output); } }
راجع كيفية كتابة الاختبارات للحصول على التفاصيل.
انظر مرجع الوظيفة والفئة.
انظر النصائح.
تتوفر بعض ميزات اختبار ci-phpunit في الحزم المستقلة التالية.
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
تطبيق اختبار CodeIgniter لاختبار ci-phpunit
برنامج تثبيت الملحن CodeIgniter
CLI لـ CodeIgniter 3.0
CodeIgniter غصين بسيط وآمن
عقيدة CodeIgniter
أداة نشر CodeIgniter
مدقق اسم الملف CodeIgniter3
عينة من أداة CodeIgniter (عرض جزئي).
وحدة تحكم CodeIgniter3 ذات مساحة الاسم