Warnung
Ein Upgrade auf CodeIgniter4 wird dringend empfohlen.
Eine einfachere Möglichkeit, PHPUnit mit CodeIgniter 3.x zu verwenden.
Sie müssen die CodeIgniter-Kerndateien überhaupt nicht ändern.
Sie können Controller-Tests einfach schreiben.
Vielleicht ist nichts unüberprüfbar.
Gut dokumentiert.
PHP 7.3 oder höher
Wenn Sie Monkey Patching verwenden, müssen Sie PHP-Parser 4.2 oder höher als Composer-Abhängigkeit verwenden.
CodeIgniter 3.x
Wenn Sie auf CodeIgniter4 aktualisieren möchten, lesen Sie #361.
PHPUnit 9.3 oder höher
Wenn Sie PHPUnit 9.2 oder früher verwenden möchten, verwenden Sie bitte ci-phpunit-test 2.x.
NetBeans
Gehen Sie zu Projekteigenschaften > Testen > PHPUnit , aktivieren Sie das Kontrollkästchen Benutzerdefinierte Testsuite verwenden und wählen Sie application/tests/_ci_phpunit_test/TestSuiteProvider.php
aus.
Siehe Änderungsprotokoll.
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/
Laden Sie den neuesten ci-phpunit-test
von https://github.com/kenjis/ci-phpunit-test/releases herunter.
Entpacken Sie den Ordner application/tests
und kopieren Sie ihn in Ihren application
im CodeIgniter-Projekt.
Das ist es.
$ cd /path/to/codeigniter/$ Composer erfordern kenjis/ci-phpunit-test:^3.0 --dev
Und führen Sie install.php
aus:
$ php seller/kenjis/ci-phpunit-test/install.php --from-composer
Der obige Befehl überschreibt immer vorhandene Dateien.
Sie müssen es im Stammordner des CodeIgniter-Projekts ausführen.
Sie können Ihre application
und public
Ordner mit Optionsargumenten angeben, wenn Sie benutzerdefinierte Ordnerpfade verwenden.
$ php seller/kenjis/ci-phpunit-test/install.php -a <application_dir> -p <public_dir> -t <unittest_dir>
Die Standardeinstellung wäre also:
$ php seller/kenjis/ci-phpunit-test/install.php -a application -p public -t application/tests
Einige Pfade sind jedoch möglicherweise nicht korrekt. In diesem Fall korrigieren Sie sie bitte in tests/Bootstrap.php.
Laden Sie den neuesten ci-phpunit-test
von https://github.com/kenjis/ci-phpunit-test/releases herunter.
Entpacken und ersetzen Sie den Ordner application/tests/_ci_phpunit_test
.
Änderungsprotokoll lesen.
$ cd /path/to/codeigniter/$ Composer Update kenjis/ci-phpunit-test
Änderungsprotokoll lesen.
Wenn Sie ein Upgrade von einer früheren Version von ci-phpunit-test
durchführen, die ein application/test/_ci_phpunit_test
Verzeichnis erstellt hat, und nun ci-phpunit-test
direkt aus Composer verwenden möchten, müssen Sie ein paar zusätzliche Schritte ausführen:
Löschen Sie das alte Testbibliotheksverzeichnis:
$ rm -rf /path/to/codeigniter/application/tests/_ci_phpunit_test
Bearbeiten Sie die Datei application/tests/Bootstrap.php
. Fügen Sie unten im Abschnitt „Festlegen der Hauptpfadkonstanten“ Folgendes hinzu:
define('CI_PHPUNIT_TESTPATH', implode(DIRECTORY_SEPARATOR, [Verzeichnisname(APPPATH), 'vendor', 'kenjis', 'ci-phpunit-test', 'application', 'tests', '_ci_phpunit_test'] ).DIRECTORY_SEPARATOR);
Und ersetzen Sie alle Verweise auf __DIR__ . '/_ci_phpunit_test/
oder TESTPATH . '_ci_phpunit_test
mit CI_PHPUNIT_TESTPATH . '
. (So würde beispielsweise __DIR__ . '/_ci_phpunit_test/CIPHPUnitTest.php'
zu CI_PHPUNIT_TESTPATH . '/CIPHPUnitTest.php'
werden.)
Sie müssen PHPUnit installieren, bevor Sie Tests ausführen.
Wenn Sie Composer verwenden:
$ Composer erfordert phpunit/phpunit --dev
$ cd /path/to/codeigniter/$ seller/bin/phpunit -c application/tests/PHPUnit 9.5.4 von Sebastian Bergmann und Mitwirkenden.... 3 / 3 (100 %)Zeit: 00:00.102, Speicher: 12.00 MBOK (3 Tests, 3 Behauptungen) Codeabdeckungsbericht im Clover-XML-Format generieren ... erledigt [00:00.002] Codeabdeckung wird generiert Bericht im HTML-Format ... fertig [00:00.012]
Um einen Abdeckungsbericht zu erstellen, ist Xdebug erforderlich.
Wenn Sie eine einzelne Testfalldatei ausführen möchten:
$ Vendor/bin/phpunit -c application/tests/ application/tests/models/Category_model_test.php
Eine Testfallklasse für Inventory_model
würde beispielsweise wie folgt aussehen:
<?phpclass Inventory_model_test erweitert TestCase {public function setUp(): void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }öffentliche Funktion test_get_category_list() {$expected = [1 => 'Book',2 => 'CD',3 => 'DVD', ];$list = $this->obj->get_category_list();foreach ($list as $category) {$this->assertEquals($expected[$category->id], $category->name); } }öffentliche Funktion test_get_category_name() {$actual = $this->obj->get_category_name(1);$expected = 'Book';$this->assertEquals($expected, $actual); } }
Eine Testfallklasse für den Welcome-Controller würde beispielsweise wie folgt aussehen:
<?phpclass Welcome_test erweitert TestCase {öffentliche Funktion test_index() {$output = $this->request('GET', 'welcome/index');$this->assertStringContainsString('<title>Willkommen bei CodeIgniter</title>', $output); } }
Weitere Informationen finden Sie unter „Testen schreiben“.
Siehe Funktions- und Klassenreferenz.
Siehe Tipps.
Einige Funktionen von ci-phpunit-test sind in den folgenden eigenständigen Paketen verfügbar.
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
CodeIgniter-Testanwendung für ci-phpunit-test
CodeIgniter Composer-Installationsprogramm
Cli für CodeIgniter 3.0
CodeIgniter Einfacher und sicherer Zweig
CodeIgniter-Doktrin
CodeIgniter-Bereitsteller
CodeIgniter3 Dateinamenprüfung
Beispiel für das CodeIgniter-Widget (Teilansicht).
CodeIgniter3-Namespace-Controller