警告
CodeIgniter4 にアップグレードすることを強くお勧めします。
CodeIgniter 3.x で PHPUnit を使用する簡単な方法。
CodeIgniter コア ファイルを変更する必要はまったくありません。
コントローラーのテストを簡単に作成できます。
おそらく、テストできないものは何もありません。
よく文書化されています。
PHP 7.3以降
Monkey Patching を使用する場合は、Composer の依存関係として PHP-Parser 4.2 以降を使用する必要があります。
コードイグナイター 3.x
CodeIgniter4 にアップグレードする場合は、#361 を参照してください。
PHPUnit 9.3以降
PHPUnit 9.2 以前を使用する場合は、ci-phpunit-test 2.x を使用してください。
NetBeans
[プロジェクト プロパティ] > [テスト] > [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
フォルダーを解凍して、CodeIgniter プロジェクトのapplication
フォルダーにコピーします。
それでおしまい。
$ cd /path/to/codeigniter/$composer require 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 <アプリケーション ディレクトリ> -p <パブリック ディレクトリ> -t <ユニットテスト ディレクトリ>
したがって、デフォルトは次のようになります。
$ php ベンダー/kenjis/ci-phpunit-test/install.php -a application -p public -t application/tests
ただし、一部のパスが正しくない可能性があります。その場合は、tests/Bootstrap.php で修正してください。
最新のci-phpunit-test
を https://github.com/kenjis/ci-phpunit-test/releases からダウンロードします。
解凍して、 application/tests/_ci_phpunit_test
フォルダーを置き換えます。
変更ログを読み取ります。
$ cd /path/to/codeigniter/$composer update kenjis/ci-phpunit-test
変更ログを読み取ります。
application/test/_ci_phpunit_test
ディレクトリを作成した以前のバージョンのci-phpunit-test
からアップグレードし、Composer からci-phpunit-test
を直接使用したい場合は、いくつかの追加手順があります。
古いテスト ライブラリ ディレクトリを削除します。
$ rm -rf /path/to/codeigniter/application/tests/_ci_phpunit_test
application/tests/Bootstrap.php
ファイルを編集します。 「メイン パス定数の設定」セクションの最後に、次の行を追加します。
定義('CI_PHPUNIT_TESTPATH', implode(DIRECTORY_SEPARATOR, [ディレクトリ名(APPPATH), 'ベンダー', 'kenjis', 'ci-phpunit-test', 'アプリケーション', 'テスト', '_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 をインストールする必要があります。
Composer を使用する場合:
$コンポーザーにはphpunit/phpunit --devが必要です
$ cd /path/to/codeigniter/$vendor/bin/phpunit -c application/tests/PHPUnit 9.5.4 by Sebastian Bergmann および寄稿者.... 3 / 3 (100%)時間: 00:00.102、メモリ: 12.00 MBOK (3 つのテスト、3 つのアサーション)Clover XML 形式でコード カバレッジ レポートを生成中...完了[00:00.002]HTML 形式でコード カバレッジ レポートを生成しています ... 完了 [00:00.012]
カバレッジレポートを生成するには、Xdebug が必要です。
単一のテスト ケース ファイルを実行する場合は、次のようにします。
$vendor/bin/phpunit -c application/tests/application/tests/models/Category_model_test.php
例として、 Inventory_model
のテスト ケース クラスは次のようになります。
<?phpclass Inventory_model_test は TestCase を拡張します {パブリック関数 setUp(): void{$this->resetInstance();$this->CI->load->model('Inventory_model');$this->obj = $this->CI->Inventory_model; }パブリック関数 test_get_category_list() {$expected = [1 => '本',2 => 'CD',3 => 'DVD', ];$list = $this->obj->get_category_list();foreach ($list を $category として) {$this->assertEquals($expected[$category->id], $category->name); } }パブリック関数 test_get_category_name() {$actual = $this->obj->get_category_name(1);$expected = '本';$this->assertEquals($expected, $actual); } }
例として、Welcome コントローラーのテスト ケース クラスは次のようになります。
<?phpclass Welcome_test は TestCase を拡張します {パブリック関数 test_index() {$output = $this->request('GET', 'welcome/index');$this->assertStringContainsString('<title>CodeIgniter へようこそ</title>', $output); } }
詳細については、「テストの作成方法」を参照してください。
「関数とクラスのリファレンス」を参照してください。
ヒントを参照してください。
ci-phpunit-testの一部の機能は、次のスタンドアロン パッケージで利用できます。
https://github.com/kenjis/phpunit-helper
https://github.com/kenjis/monkey-patch
ci-phpunit-test 用の CodeIgniter テスト アプリケーション
CodeIgniter Composer インストーラー
CodeIgniter 3.0 の CLI
CodeIgniter シンプルで安全な Twig
CodeIgniter の原則
CodeIgniter デプロイヤー
CodeIgniter3 ファイル名チェッカー
CodeIgniter ウィジェット (部分表示) サンプル
CodeIgniter3 名前空間コントローラー