PhpStorm 2024.3 ヘルプ

PHP テストを生成する

テスト対象の PHP クラスに基づいて、テストクラススタブを自動的に生成できます。PhpStorm は、PHPUnitCodeceptionPHPSpec テストフレームワークにこの機能を提供します。Behat フレームワークを使用している場合、手動でテストを作成する必要があります。

テストクラスは、本番クラス名から派生した名前を持つ PHP クラスです。例: テストするクラスが MyClass.php の場合、PhpStorm は対応する PHPUnit テストクラスの名前を <MyClass>Test.php として自動的に作成します。

PhpStorm は、個別のファイルで定義されているクラスと、単一の PHP ファイル内で定義されているクラスのテストを生成できます。後者の場合、生成されたテストクラスごとに、PhpStorm は個別のファイルを作成します。

テストを作成したら、テストとそのサブジェクト間をすばやく移動できます。

新しいテストを追加する

  1. 以下のいずれかを行います。

    • テストする PHP クラスのエディターで、クラス定義にキャレットを置きます。次に、Alt+Enter を押して、ポップアップメニューから新しい PHP テストを作成するを選択します。このようにして、単一の PHP ファイル内の複数のクラスの間で定義された PHP クラスのテストを生成できます。

      特定のメソッドのテストを作成するには、メソッド宣言内にキャレットを置きます。選択したメソッドは、新しい PHP テストを作成するダイアログのメソッドリストで自動的に選択されます。

    • ファイル | 新規 | PHP テスト | <テストフレームワーク> テストに移動します。

    • プロジェクトツールウィンドウで Alt+Insert を押すか、テストする PHP クラスを右クリックして、選択コンテキストメニューから新規 | PHP テスト | <テストフレームワーク> テストを選択します。

    新しい PHP テストを作成するダイアログが開きます。

    create new php test phpunit dialog
  2. 新しい PHP テストを作成するダイアログで、以下を指定します。

    1. テストクラスの生成に基づくテストファイルテンプレート。PhpStorm は、サポートされているテストフレームワーク PHPUnitCodeceptionPHPSpec を使用して、テストクラスを生成するための組み込みのファイルテンプレートを提供します。

    2. テストクラス名前。PhpStorm は、選択したテストフレームワークの命名規則に従って、本番クラス名から自動的に名前を作成します。例: テストするクラスが MyClass.php の場合、PhpStorm は PHPUnit テストクラスの名前を <MyClass>Test.php として自動的に作成します。

    3. テストクラスのフォルダー。実稼働クラスを含むディレクトリと名前空間、構成されたテストソースの root とその psr-4 パッケージ接頭辞、または対応するテストフレームワークの構成ファイルで指定された値に基づいて自動的に提案されます。パス補完を使用するには、Ctrl+Space を押してリストからパスを選択します。

    4. テストクラスが属する名前空間。PhpStorm は、構成された PSR パッケージの接頭辞およびフレームワーク固有の構成ファイルで指定された値に基づいて、名前空間を自動的に補完させることができます。名前空間補完を使用するには、Ctrl+Space を押して、リストから関連する名前空間を選択します。

    5. テストメソッドスタブを生成する本番クラスメソッドの横にあるチェックボックスを選択します。親クラスから継承されたメソッドを含めるには、継承メソッドの表示チェックボックスを選択します。

      PhpStorm はテストメソッドの名前を test<production method> として自動的に作成します。テストメソッドスタブの生成に使用されるコードテンプレートは、ファイルおよびコードテンプレート設定ページのコードタブでカスタマイズできます。

テストとそのテスト対象の間を移動する

  1. エディターでテストクラスまたはテスト対象クラスを開きます。

  2. エディターのコンテキストメニューから移動 | テスト対象を選択するか、Ctrl+Shift+T を押します。

    このクラスのテストが 1 つしかない場合、IDE はすぐにそのクラスに移動します。それ以外の場合は、ポップアップから必要なテストを選択するか、新しいテストを作成するように求められます。

    Navigate to test from test subject

PHP のコンテキストでは、PHPUnit および Codeception テストを操作するときに、@covers(英語) アノテーションを使用してテストクラスまたはメソッドとそれらのテスト対象間のリンクを維持できます。

このようにして、たとえ彼らの名前が PHPUnit の命名規則(英語)に従わなくても、テストとテスト対象の間を移動することは可能でしょう:

class Person { public function getAge() {} } /** @covers Person */ class TestForPersonClass extends TestCase { /** @covers Person::getAge */ public function testCorrectAgeIsReturned() {} }

関連ページ:

PHPUnit

PhpStorm は、PHPUnit テストフレームワークとの統合による PHP アプリケーションの単体テストをサポートしています。始める前に:ローカル PHP インタープリターを構成するおよびリモート PHP インタープリターの構成の説明に従って、PHP インタープリターが PHP ページの PhpStorm に設定されていることを確認してください。PHPUnit をダウンロードしてインストールする:開始する前に、Composer がマシンにインストールされ、Composer 依存関係マネージ...

Codeception

PhpStorm は、Codeception テストフレームワークバージョン 2.2.0 以降でユニット、機能、および受け入れテストを実行するためのサポートを提供します。始める前に:ローカル PHP インタープリターを構成するおよびリモート PHP インタープリターの構成の説明に従って、PHP インタープリターが PHP ページの PhpStorm に設定されていることを確認してください。Codeception をダウンロードしてインストールする:開始する前に、Composer がマシンにイン...

PHPSpec

PhpStorm を使用すると、PHPSpec ツールセットを使用して仕様を実行することで、ビヘイビア駆動開発を実践できます。始める前に:ローカル PHP インタープリターを構成するおよびリモート PHP インタープリターの構成の説明に従って、PHP インタープリターが PHP ページの PhpStorm に設定されていることを確認してください。Composer と一緒に PHPSpec をインストールする:開始する前に、Composer がマシンにインストールされ、Composer 依存関係マ...

Behat

PhpStorm を使用すると、Behat フレームワークを使用してシナリオを実行することによって、行動主導の開発を実践できます。現在 PhpStorm は Behat 3 と Behat 2 バージョンとの統合をサポートします。PhpStorm での Behat のネイティブサポートには以下が含まれます:feature シナリオファイルと PHP シナリオ定義ファイルの認識とコーディング支援。feature ファイルでの Gherkin 構文のサポート:、、、キーワード。定義ファイルでの、アノテーションの認識。...

ファイルテンプレート

ファイルテンプレートは、プロジェクトツリーのコンテキストメニューのメニューまたは新規セクションを使用して作成する新しいファイルの既定の内容の仕様です。作成するファイルの種類に応じて、テンプレートは、その種類のすべてのファイルに期待される初期コードとフォーマットを提供します (業界または言語の標準、企業ポリシー、その他の理由に従って)。PhpStorm は、新しいファイルを作成するときに提案される、サポートされているすべてのファイルタイプの定義済みテンプレートを提供します。ファイルテンプレートの管...

プロジェクトで PHP 名前空間を構成する

PhpStorm は、PHP の名前空間名をディレクトリ構造にマップする必要があることを規定する PSR-0/PSR-4 オートロード標準をサポートします。PhpStorm でソースルートタイプでマークされたディレクトリはネームスペースのルートとみなされ、その下に作成されるすべてのディレクトリは別個のネームスペースとみなされます。ソースルートタイプが設定されている場合、新しいクラス / インターフェースなどを作成するときに、PhpStorm によって名前空間名が自動補完されます。このディレクトリ内に...