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」ボタンを押すと、テストが実行されます。

コードやテストを変更したら自動で PHPUnit を実行する へ続く。