超不定期雑記

~プログラムとかサイエンスとかいろいろと~

目次

Blog 利用状況

ニュース

書庫

PHPUnit3 のインストール

前回の続き。関連ページがいくつかあるのでインデックスも参照のこと。
ここでも %ECLIPSE_HOME_PARENT% は Eclipse のインストールフォルダの親(Eclipse の実行ファイルのパスが c:\user\xampp\eclipse\eclipse.exe なら %ECLIPSE_HOME_PARENT% は c:\user\xampp)とする。

アプリケーションの品質を高めようと思うと、ユニットテストは絶対必須の行程だと思う。 特に PHP の場合は通る関数しかコンパイルされないため、実際にすべての操作をしてみるまで文法エラーがあるのか否かすらわからない。
C++ の場合はすべてのコードをコンパイルするから、少なくともこの点についてはずいぶん安心できるんだけど。
ということで PHP でのユニットテスト(正確には自動テスト)の重要性は、他の言語の比ではないと思う。

  1. PHPUnit3 をセットアップする。 XAMPP には PHPUnit1.3.2 と PHPUnit2.3.6 がインストールされているが、現行の PHPUnit3.4.0 はない。PHPUnit3 になってずいぶんとパワーアップしているので、これはぜひインストールしておきたい。
    1. PHPUnit3 から配布先のチャンネルが変わったので、 "pear channel-discover pear.phpunit.de" コマンドを叩いて PHPUnit のチャンネルを登録する。
      2010/01/08追記
      PHPUnit3.4(2009/09/16リリース) から "pear channel-discover pear.symfony-project.com" コマンドも必要になった。日本語版の PHPUnit3.4 のドキュメントにはこの件が書かれていないので注意。英語版の PHPUnit3.4 のドキュメントには書かれている。
    2. "pear list-channels" コマンドを叩いて pear.phpunit.de チャンネルが登録されていることを確認する。
    3. "pear install phpunit/PHPUnit" コマンドを叩いて PHPUnit3 をインストールする。
  2. Eclipse を起動し、ワークスペース内にプロジェクトを作成する。プロジェクト内のディレクトリ構成は以下の通り。
        \<プロジェクト名>
        +-  htdocs      HTMLなどの表示関連
        +-  scripts     ビジネスロジック
        +-  tests       テストコード
  3. PHP エクスプローラー の「PHP インクルード・パス」を右クリックして [インクルード・パス]-[インクルード・パスの構成] から「<プロジェクト>のプロパティー」を開く。次に [ライブラリー] タブが開かれていることを確認して、[外部ソースフォルダーの追加] ボタンを押し、 "%ECLIPSE_HOME_PARENT%\xampp\php\PEAR" を選択する。[ライブラリーおよびインクルード・パス上の外部フォルダー] に "%ECLIPSE_HOME_PARENT%\xampp\php\PEAR" が表示されていることを確認して [OK] ボタンを押す。
  4. tests フォルダーに下記の 2 ファイルを作成する。Windows のエクスプローラーとテキストエディタで直接作成してもいいし、Eclipse の PHP エクスプローラーを使ってもよい。直接作成した場合は、Eclipse の PHP エクスプローラー 上で右クリックし、[リフレッシュ] を実行すること。
  5. TestRunner.php を右クリックして [デバッグ]-[デバッグの構成] で、「デバッグ構成」ダイアログを開き、[PHPスクリプト] タブで [PHPファイル] 横の「参照」ボタンを使って "TestRunner.php" を選択する。また、[環境] タブで 変数名: "PHP_BIN_DIR"、値: "${eclipse_home}../xampp/php/" の環境変数を作成し、ダイアログ上部の[名前] に適当な名前("TestRunner" など)を設定して [適用] ボタンを押した後、[閉じる] ボタンを押してダイアログを閉じる。
  6. ツールバー上の [デバッグ] ボタンから "TestRunner" を選択する。すると、 Eclipse 上でテストコードをデバッグ実行することができる。
手順4で追加するファイルの内容は以下の通り。

AllTests.php
<?PHP
require_once 'PHPUnit/Framework/TestSuite.php';

class AllTests
{
    public static function suite()
    {
        $suite = new PHPUnit_Framework_TestSuite();

        $dir = dirname( __FILE__ );
        foreach( scandir( $dir ) as $file )
        {
            $file_path = $dir . DIRECTORY_SEPARATOR . $file;
            if( !is_file( $file_path ) ||
                !preg_match( '/^(\w*Test)\.php$/', $file ) )
            {
                continue;
            }

            include_once $file_path;
            $test_class = basename( $file, ".php" );
            $suite->addTestSuite( $test_class );
        }

        return $suite;
    }
}
?>

TestRunner.php
<?PHP
$_SERVER[ 'argv' ] = array( 'UnitTest', dirname( __FILE__ ) . DIRECTORY_SEPARATOR . 'AllTests.php' );
$php_dir = $_ENV[ 'PHP_BIN_DIR' ];
if( $php_dir[ 0 ] === '/' )
{
    $php_dir = substr( $php_dir, 1 );
}
require $php_dir . 'phpunit';
?>

TestRunner.php に先頭の "/" を削除している処理があるが、これは の変数 "${eclipse_home}" が Windows 環境であっても先頭に "/" を付けているため。
Eclipse 3.5.1 ではこのような処理が必要だが、将来のバージョンでは修正されるかもしれない。

投稿日時 : 2009年9月25日 21:07

Feedback

# S品ルイヴィトン 2018/10/01 10:05 ffvzwfrde@docomo.ne.jp

ブランドスマホケース/カバー激安通販ショップ
ご来店いただき誠にありがとうございます。
当店では「信頼第一、サービス第一」をモットーに、お客様第一主義で営業しております。取扱商品としては、iPhoneスマホケース、iPadケース、SAMSUNG GALAXY スマホケース、バッテリー&充電器や、関係する物などです。皆様のニーズにお応えすべく各種製品を取り揃えております。
ごゆっくりお買い物をお楽しみください。皆様のお求めになりたい商品がきっと見つかります。
休業日: 365天受付年中無休

タイトル
名前
Url
コメント