PHPUnitとSeleniumを使用したテスト

PHP向けのNetBeans IDEは、PHPUnit自動化テストをサポートしています。PHPUnitによって、NetBeans IDEでは、IDEがPythonに提供するコード・カバレージと同じように、PHPのコード・カバレージが提供されます。テストの出力は、IDEのJUnitおよびPythonのテスト・ランナーが使用するのと同じ、機能が豊富な出力ウィンドウに表示されます。

NetBeans IDEでは、PHPUnitに加えて、Seleniumの移植可能なテスト・フレームワークもサポートされています。Seleniumプラグインは、更新センターから入手できます。このプラグインをインストールすると、SeleniumサーバーがIDEの登録済サーバーに追加され、Seleniumのテスト・オプションがPHPのメニューに追加されます。

目次

このページの内容は、NetBeans IDE 7.2、7.3および7.4に適用されます

このチュートリアルに従うには、次のソフトウェアとリソースが必要です。

ソフトウェアまたはリソース 必須バージョン
NetBeans IDE PHPダウンロード・バンドル
PEARを含むPHPエンジン バージョン5。
Webサーバー Apache HTTP Server 2.2 (推奨)
PHPUnit バージョン3.4.0以上
PHPUnitのスケルトン・ジェネレータPHPUnitと同じバージョン

PHPUnitのインストール

PHPUnitはPHPUnitのドキュメントに従って、PHPUnitのスケルトン・ジェネレータはスケルトン・ジェネレータのドキュメントに従って、PEARを使用してインストールします。PHPUnitバージョン3.4.0以上をインストールします。特別な設定は不要です。PHPUnitがインストールされたら、NetBeansで認識されます。PHPエンジンとともにPEARがインストールされている必要があります。また、PHPUnitのドキュメントには、PHPUnitが通常はローカルのPEARディレクトリにインストールされると記載されています。パスは/usr/lib/php/PHPUnitと記載されていますが、XAMPP for WindowsではXAMPP_HOME\php\PEAR\PHPUnitになります。

NetBeans IDEでPHPUnitのインストールが認識されていることを確認するには、「ツール」>「オプション」(Macの場合は「NetBeans」>「プリファレンス」)を開き、PHPウィンドウを確認します。「単体テスト」タブを開きます。PHPUnitおよびスケルトン・ジェネレータのスクリプトのパスが表示されます。スクリプトが表示されない場合は、空のフィールドの横にある「検索」をクリックします。IDEでは、ローカル・システムでスクリプトを検索します。または、「参照」をクリックして、スクリプトを参照します。

PHPUnitスクリプトのパスを示すオプション・ページ

PHPUnitテストの作成と実行

NetBeans IDEでは、ファイル内のすべてのPHPクラスに対するPHPUnitテストを作成し、実行できます。テスト・ジェネレータが正常に動作するように、PHPファイルは、ファイル内の最初のクラスと同じ名前にします。

クラスのPHPUnitテストを作成して実行するには:

  1. CalculatorというPHPプロジェクトを作成します。このプロジェクトにcalculator.phpというファイルを作成します。このファイルに、PHPUnitのドキュメントのスケルトン・ジェネレータの章にあるCalculatorクラスを入力するか、または貼り付けます。
    <?php
    class Calculator
    {
        public function add($a, $b)
        {
            return $a + $b;
        }
    }
    ?>
  2. @assert注釈と、入力と出力の例を使用したコメント・ブロックを追加します。この例には間違った表明が1つ含まれています。
    <?php
    class Calculator
    {
        /**
         * @assert (0, 0) == 0
         * @assert (0, 1) == 1
         * @assert (1, 0) == 1
         * @assert (1, 1) == 2
         * @assert (1, 2) == 4
         */
        public function add($a, $b)
        {
            return $a + $b;
        }
    }
    ?>

    注意: 注釈のコード補完を使用して、@assert注釈を追加できます。[Tab]キーを使用してパラメータ間を移動するか、またはパラメータ値を入力して[Enter]を押します。

    @assert注釈での注釈のコード補完コード補完を使用した、@assert注釈のパラメータの入力
  3. 「プロジェクト」ウィンドウで「Calculator.php」ノードを右クリックし、「ツール」>「PHPUnitテストを作成」を選択します。「ソース・ファイル」ノードのコンテキスト・メニューで、プロジェクト内のすべてのファイルのテストを作成できます。
    「PHPUnitテストを作成」オプションが表示された、PHPプロジェクトの「ソース・ファイル」ノードのコンテキスト・メニュー
  4. テストを初めて作成するときは、テスト・ファイルを保存するディレクトリを指定するダイアログが開きます。この例では、参照機能を使用してtestsディレクトリを作成しています。
    テスト・ファイルのディレクトリのダイアログ

    注意: 1つのプロジェクトに複数のテストを手動で記述できます。複数のテストを記述する場合は、テスト・ファイルのディレクトリのサブディレクトリ(たとえば、"important"、"quick")に、それらのテストをソートできます。次に、サブフォルダを右クリックし、「テストの実行」を選択して、サブフォルダ内のテストを実行できます。

    「テストの実行」フォルダ・コンテキスト・アクション
  5. IDEによって、CalculatorTest.phpというファイルに、スケルトン・テスト・クラスが生成されます(このファイルは、「プロジェクト」ウィンドウに表示され、エディタで開きます)。
    新しいテスト・クラスを示す「プロジェクト」ウィンドウ

    @assert注釈ごとにテストが作成されます。

        /**
         * Generated from @assert (1, 1) == 2.
         */
        public function testAdd4()
        {
            $this->assertEquals(
              2,
              $this->object->add(1, 1)
            );
        }
  6. 1つのファイルまたはプロジェクト全体をテストできます。プロジェクトをテストするには、プロジェクトの親ノードを右クリックして「テスト」を選択するか、または[Alt]-[F6]を押します。Calculator.phpファイルをテストするには、ファイルのノードを右クリックして「テスト」を選択するか、または[Ctrl]-[F6]/[⌘]-[F6]を押します。この例では、1つのファイルに1つのクラスのみがあるため、結果は同じです。IDEによってテストが実行され、「テスト結果」ウィンドウに結果が表示されます。
    「テスト結果」ウィンドウ

    より詳細なテキスト・バージョンの結果が「出力」ウィンドウに表示されます。

    テスト結果を示す「出力」ウィンドウ

テスト・グループの使用

テスト・スイートを実行するとき、実行するテストのグループを選択できます。たとえば、一部のテストは本番環境でのみ実行し、他のテストは本番環境と開発環境の両方で実行する場合があります。前者のテストをproductionグループに配置し、後者のテストをproductionグループとdevelopmentグループの両方に配置します。テスト・スイートを開発環境で実行する場合、developmentテスト・グループのみを選択して実行します。

PHPプロジェクト内の任意のファイルについてテスト・グループを使用するには、そのプロジェクトでテスト・グループを有効にする必要があります。

テスト・グループの一部としてテストをマークするには、テスト・メソッドに@group [group name]の注釈を付けます。

テスト・グループを作成および実行するには、次を実行します。

  1. 「プロジェクト」ウィンドウで「Calculator」ノードを右クリックし、「プロパティ」を選択します。「プロジェクト・プロパティ」が開きます。
  2. 「プロジェクト・プロパティ」で「PHPUnit」カテゴリを選択します。「テストの実行前にテスト・グループの入力を求める」を選択します。「OK」をクリックします。
    テスト・グループが有効化された、「プロジェクト・プロパティ」の「PHPUnit」カテゴリ
  3. エディタでCalculatorTest.phpを開きます。
  4. メソッドtestAddtestAdd3、およびtestAdd5について、注釈@group productionを追加します。
    テスト・グループの注釈を示すコード
  5. メソッドtestAdd2およびtestAdd4について、注釈@group productionおよび@group developmentを追加します。テスト・グループの注釈を示すコード
  6. Calculator.phpノードを右クリックし、「テスト」を選択します。ダイアログが開き、実行するテスト・グループを指定するように求められます。「development」を選択して「OK」をクリックします。IDEは、@group developmentという注釈が付いたテストのみを実行します。
    テスト・グループの選択ダイアログ

NetBeans IDEのPHPUnitテスト・グループの詳細は、PHP向けのNetBeans IDEブログ投稿のPHPUnitテスト・グループの使用を参照してください。

テスト結果とIDE出力

PHPUnitのテスト結果は、IDEの「テスト結果」と「出力」の2つのウィンドウに表示されます。「テスト結果」ウィンドウには、グラフィック・ペインと簡単なテキスト・ペインがあります。「出力」ウィンドウには、より詳細なテキスト・バージョンの出力が表示されます。この項では、「テスト結果」ウィンドウと「出力」ウィンドウについて詳しく説明します。

「テスト結果」ウィンドウでは、次の場所で、失敗したテストに関する情報を確認できます。

  • UIペイン内で、失敗したテストのツリー・エントリに添付されているメッセージ
  • 右側のペイン内のテキスト(失敗したテスト・コード行へのリンクを含む)
  • UIペイン内で、失敗したテストの上にカーソルを置くと表示されるツールチップのテキスト
ツールチップを示す「テスト結果」ウィンドウ

「テスト結果」ウィンドウの左側には次のボタンがあります。

  • テストを再実行再実行ボタン
  • 失敗したテストの表示失敗したテストの表示ボタン
  • 成功したテストの表示成功したテストの表示ボタン
  • 成功したがエラーがあるテストの表示エラーがあるテストの表示ボタン
  • 次のテスト結果次のテスト・ボタンまたは前のテスト結果前のテスト・ボタンへの移動

「出力」ウィンドウには、PHPUnitスクリプトの完全な出力が表示されます。「テスト結果」ウィンドウ内の情報ではエラーの原因を特定できない場合に便利です。「テスト結果」ウィンドウと同様に、「出力」ウィンドウには、失敗したテスト・クラス行へのリンクが含まれます。また、テストを再実行したり、PHPの「オプション」ウィンドウを開いたりするためのボタンが左側にあります。「出力」ウィンドウで「オプション」にリンクされたボタン

PHPUnitテストの完全な結果を示す「出力」ウィンドウ

コード・カバレージ

PHP向けのNetBeans IDEには、PHPUnitのサポートとともにコード・カバレージがあります(IDEには、Pythonのコード・カバレージもあります)。コード・カバレージでは、すべてのメソッドがPHPUnitテストでカバーされるかどうかが確認されます。この項では、既存のCalculatorクラスでコード・カバレージがどのように機能するかについて説明します。

コード・カバレージを使用するには:

  1. Calculator.phpを開き、add2というadd関数の複製を追加します。Calculatorクラスは次のようになります。
    <?php
    class Calculator {
        /**
         * @assert (0, 0) == 0
         * @assert (0, 1) == 1
         * @assert (1, 0) == 1
         * @assert (1, 1) == 2
         * @assert (1, 2) == 4
         */
        public function add($a, $b) {
            return $a + $b;
        }
    
        public function add2($a, $b) {
            return $a + $b;
        }
    
    }    
    ?>
    
  2. プロジェクト・ノードを右クリックします。コンテキスト・メニューから、「コード・カバレージ」>「コード・カバレージを収集し表示」を選択します。デフォルトでは、「エディタ・バーを表示」も選択されています。
    プロジェクト・ノードのコンテキスト・メニューからコード・カバレージをオンにする
  3. エディタの最下部に、コード・カバレージのエディタ・バーが表示されます。コード・カバレージはテストされていないので、エディタ・バーには0%のカバレージが表示されます。(「クリア」をクリックしてテスト結果をクリアした後もこのように表示されます。)
    テスト実行前のコード・カバレージのエディタ・バー
  4. 「テスト」をクリックして開いているファイルをテストするか、または「すべてのテスト」をクリックしてプロジェクトのすべてのテストを実行します。テスト結果が表示されます。また、コード・カバレージのバーに、テストでカバーされている実行可能コード文の割合(パーセント)が示されます。エディタ・ウィンドウで、カバーされているコードは緑色で強調表示され、カバーされていないコードは赤で強調表示されます。

    警告: add2関数を追加した後でテスト・ファイルを再生成した場合、PHPUnitテストは実行されません。これは、PHPUnitが2つの競合するtestAdd2関数を作成するためです。このような複数の関数についてPHPUnitを使用する場合、末尾に数字を付加することによって関数を区別しないでください。PHPUnitのドキュメントを参照してください。

    テスト実行後のコード・カバレージのエディタ・バー
  5. エディタ・バーで、「レポート」をクリックします。コード・カバレージのレポートが開き、プロジェクトに対して実行されたすべてのテストの結果が表示されます。レポート内のボタンを使用して、結果をクリアしたり、すべてのテストを再実行したり、コード・カバレージを非アクティブ化(「完了」をクリック)できます。
    コード・カバレージのレポート
  6. プロジェクトに別のクラスを追加し、テスト・ファイルを削除して再作成して、コード・カバレージのレポートをもう一度確認できます。新しいクラスが表示されます。次のレポートでは、Calculatorクラスに、テストに含まれない関数が再度含まれています。
    2回目のクラスを示すコード・カバレージのレポート

プロジェクト固有の構成の使用

IDEでは、プロジェクトに次のカスタム構成を選択できます。

  • ブートストラップ・ファイル
  • XML構成ファイル
  • テスト・スイート
  • カスタムのPHPUnitスクリプト

プロジェクト固有の構成を設定するには:

  1. プロジェクトのノードまたはプロジェクトの「テスト・ファイル」ノードを右クリックし、「プロパティ」を選択します。「プロパティ」ダイアログが開きます。
    「プロパティ」が選択されたプロジェクト・コンテキスト・メニュー
  2. 「PHPUnit」カテゴリを選択します。カスタムのブートストラップ、XML構成、PHPUnitスクリプト、またはテスト・スイート・ファイルを選択できるダイアログが開きます。
    「プロジェクト・プロパティ」ダイアログの「PHPUnit」カテゴリ
  3. ブートストラップの構造やXML構成ファイルに精通していない場合は、NetBeans IDEを使用してスケルトンを生成できます。また、「ヘルプ」をクリックして、ダイアログを使用する手順を調べることができます。
    「プロジェクト・プロパティ」の「PHPUnit」カテゴリの詳細

カスタム・クラス・ローダーを使用するプロジェクトの場合、__autoload()特殊関数の実装などによる、ブートストラップ・オプションが必要です。プロジェクトの複数のクラスで使用するグローバル定数を定義するファイルなど、事前にファイルを含める必要がある場合も、ブートストラップ・オプションを使用します。

XML構成ファイルを使用して、コマンド行のコールに使用するオプションを定義できます。詳細は、PHPUnitのマニュアルを参照してください。XML構成ファイルを使用して、テスト・ケースにphp.ini設定やグローバル変数を定義することもできます。また、XML構成ファイルにブートストラップ・オプションを設定することもできます。

カスタム・テスト・スイートを設定すると、「実行」>「プロジェクトをテスト」を選択するたびに、このスイートが実行されます。これは、テストのサブセットのみを実行する場合や、データ・プロバイダなど、手動で追加する必要があるPHPUnitの最近追加された機能を使用する場合に非常に便利です。テスト・スイートは必要な数だけ定義でき、プロジェクト・エクスプローラでファイルを右クリックして「実行」を選択すると、それらを個別に実行できます。混乱を防ぐため、カスタム・テスト・スイートを使用するときには、NetBeansから通知があります。通知は、「テスト結果」および「出力」ウィンドウで確認できます。

「ツール」>「オプション」で選択したデフォルトのスクリプトのかわりに、プロジェクトのカスタムPHPUnitスクリプトを使用できます。カスタムPHPUnitスクリプトには、コマンド行のスイッチを含めることができます(PHPUnitのマニュアルを参照)。

 

Seleniumフレームワークでのテストの実行

Seleniumは、Webアプリケーション用の移植可能なソフトウェア・テスト用フレームワークです。テストは、HTMLの表として記述したり、一般的なプログラミング言語でコーディングでき、最新のほとんどのWebブラウザで直接実行できます。Seleniumは、Windows、Linux、およびMacintoshにデプロイできます。詳細は、SeleniumのWebサイトを参照してください。

NetBeans IDEには、Seleniumサーバーを含むプラグインがあります。このプラグインを使用して、PHP、Webアプリケーション、またはMavenプロジェクトに対してSeleniumのテストを実行できます。PHPに対してSeleniumのテストを実行するには、Testing SeleniumパッケージをPHPエンジンにインストールする必要があります。

PHPに対してSeleniumのテストを実行するには:

  1. コマンド・プロンプトを開き、コマンドpear install Testing_Selenium-betaを実行します。パスにPHP_HOME/php/PEARが含まれている必要があります。コマンドが正常に完了したら、プロンプトにinstall ok: channel://pear.php.net/Testing_Selenium-0.4.3と表示されます。
  2. IDEで、「ツール」>「プラグイン」を開き、PHP向けのSeleniumモジュールをインストールします。
  3. 「プロジェクト」ウィンドウで、Calculatorプロジェクトのプロジェクト・ノードを右クリックします。「新規」>「その他」を選択します。新規ファイル・ウィザードが開きます。「Selenium」を選択し、「次」をクリックします。
    Seleniumのファイルが選択された新規ファイル・ウィザード
  4. Seleniumのテストを初めて作成するときは、Seleniumのテスト・ファイル用のディレクトリを設定するダイアログが開きます。これは、PHPUnitのテスト・ファイルとは別のディレクトリにします。そうしないと、単体テストを実行するたびにSeleniumのテストが実行されます。Seleniumのような機能的なテストの実行は、単体テストの実行よりも時間がかかるため、単体テストを実行するたびにこれらのテストが実行されることは避けたい場合があります。
  5. 名前と場所ページの設定はデフォルトのままにし、「終了」をクリックします。Seleniumの新しいテスト・ファイルがエディタで開き、「プロジェクト」ウィンドウに表示されます。
    Seleniumの新しいテストを示す「プロジェクト」ウィンドウ
  6. プロジェクトのコンテキスト・メニューに「Run Selenium Tests」という項目が追加されます。この項目をクリックすると、PHPUnitテストと同様に、Seleniumのテスト結果が「テスト結果」ウィンドウに表示されます。

その他の課題

有益なアイデアをいくつか紹介します。

  • Calculator.phpに、2番目のクラス($aと$bの積を求めるCalculator2クラスなど)を追加します。テストを削除して再生成します。
  • 複数の部に分かれているCRUDアプリケーションの作成のチュートリアルを試す場合は、最後のプロジェクトのSeleniumテストを作成します。

メーリング・リストに登録することによって、NetBeans IDE PHP開発機能に関するご意見やご提案を送信したり、サポートを受けたり、最新の開発情報を入手したりできます。このリストはNetBeans IDEフォーラムにミラーがあります。

関連項目

NetBeans IDEでのPHPのテストの詳細は、次のリソースを参照してください。

PHPの学習に戻る

get support for the NetBeans

Support


By use of this website, you agree to the NetBeans Policies and Terms of Use. © 2013, Oracle Corporation and/or its affiliates. Sponsored by Oracle logo