PHPUnit のテストを Web から実行する VisualPHPUnit
PHPUnit の WebUI の VisualPHPUnit というのがありました。
CodeIgniter はもともとコマンドラインを使わないため、ユーザの中にはコマンドラインに親しんでおらず、ブラウザからテスト結果をみたいという人もいます。この VisualPHPUnit を CIUnit で使ってみます。
上記より、v1.5.1 をダウンロードします。
フォルダ名を「VisualPHPUnit」に変更し、CIUnit をインストールした CodeIgniter のフォルダに移動します。
ci-ja/ application/third_party/CIUnit/ tests/ VisualPHPUnit/
PHP から書き込みできるようにパーミッションを設定します。
$ chmod o+w history/ $ chmod o+w errors/errors.tmp
設定ファイルである config.php を設定します。PHPUnit、テストフォルダ、bootstrap のパスを設定します。
なお、統計を記録する場合、データを保存するデータベースの設定も必要になります。
--- config.php.orig 2011-07-15 09:36:00.000000000 +0900 +++ config.php 2011-07-19 17:33:09.219539341 +0900 @@ -41,13 +41,13 @@ define("BASE_INSTALL", realpath(__DIR__)); // The directory where PHPUnit is installed -define('PHPUNIT_INSTALL', '/usr/share/pear/PHPUnit'); +define('PHPUNIT_INSTALL', '/opt/lampp/lib/php/PHPUnit'); set_include_path(get_include_path().PATH_SEPARATOR. PHPUNIT_INSTALL.PATH_SEPARATOR); // The directory where the tests reside -define('TEST_DIRECTORY', BASE_INSTALL . '/tests/'); +define('TEST_DIRECTORY', BASE_INSTALL . '/../tests/'); /* * Optional settings @@ -81,11 +81,13 @@ // Paths to any necessary bootstraps $bootstraps = array( - // '/path/to/tests/bootstrap.php' + TEST_DIRECTORY . '../application/third_party/CIUnit/bootstrap_phpunit.php' ); +/* move to index.php foreach ( $bootstraps as $bootstrap ) { require $bootstrap; } +*/ ?>
bootstrap を実行するタイミングが早すぎるので、テスト実行の直前に移動します。また、VisualPHPUnit からのテスト実行時の POST データが CodeIgniter に渡らないように空にしておきます。とりあえず、この変更で CIUnit で動きました。
--- index.php.orig 2011-07-15 09:36:00.000000000 +0900 +++ index.php 2011-07-19 17:20:02.163710467 +0900 @@ -145,6 +145,12 @@ set_error_handler(array($vpu, 'handle_errors')); } + // for CIUnit + $_POST = array(); + foreach ( $bootstraps as $bootstrap ) { + require $bootstrap; + } + $results = $vpu->run($tests); if ( $store_statistics ) {
ブラウザから VisualPHPUnit のフォルダにアクセスし、左コラムから実行するテストを選択し、「Run Tests」ボタンを押すと、テストが実行されます。