VSCode+ComposerでPHPUnit9.0を使う

VSCode+ComposerでPHPUnit9.0を使う

前提

項目 バージョン
Composer 1.10.1
PHPUnit 9.0.1

Composerはインストールされているものとします。まずはVSCodeを使わずに、ComposerからPHPUnitをインストールします。

C:\sandbox>composer init -q
C:\sandbox>composer require --dev phpunit/phpunit

phpunit.bat作成する

php vendor\phpunit\phpunit\phpunit --versionとするのが面倒なのでバッチを作成します。

echo @php "%~dp0vendor\phpunit\phpunit\phpunit" %* > phpunit.cmd

これでphpunit --versionというように実行することができます。

src配下をオートロードする

プロジェクトは以下の構成とします。

C:.
└─sandbox プロジェクト
  ├─src ソース
  ├─test テストコード
  └─vendor

テストコードでsrc配下のクラスをrequireしたくないので、src配下をオートロードしておきます。composer.jsonにautoload部分にpsr-4を追加します。

以下では、App\\は名前空間となります。src/とすることでsrc配下のファイルをプリロードすることができます。

{
    "require": {},
    "require-dev": {
        "phpunit/phpunit": "^9.0"
    },
    # add start 
    "autoload": {
        "psr-4": {
            "App\\": "src/"
        }
    }
    # add end
}

composer.jsonを今回のようにautoloadのみ反映させる場合は、composer dumpコマンドでOKです。

C:\sandbox>composer dump
Generating autoload files
Generated autoload files

composer dumpautoloadコマンドでもいいみたいです。更新対象は2つです。

vendor\composer\autoload_psr4.php
vendor\composer\autoload_static.php
PHPのオートロード(autoload) - Qiita
PHPのオートロードとはオートロードとは「自動」で「ロード」してくれる仕組みです。何をロードしてくるのでしょうか。それはファイルです。PHPでは通常require_once "hogeho…

コマンドの初期設定をphpunit.xmlで行う

プロジェクト直下(composer.jsonがある場所)に、phpunit.xmlを作成します。

phpunitのコマンドオプションをxmlに書くことによってデフォルトで指定するオプションを省略することができます。

以下は、phpunit --colors testと同じ設定になります。

<?xml version="1.0" encoding="UTF-8" ?>
<phpunit colors="true">
  <testsuites>
    <testsuite name="Test suite">
      <!-- testフォルダ配下のテストファイルをテストする -->
      <directory>test</directory>
    </testsuite>
  </testsuites>
</phpunit>

このファイルを設定することで、phpunitでテストコードが実行されます。

テストメソッド

PHPUnitのテストコードの決まりについてです。

testXXXというようにプレフィックスにtestをつけることでテストメソッドと認識します。または

/**
 * @test
 */

をつけるとテストメソッドと認識してくれます。@Testではないことに注意です。

各テストの最初に初期データ投入やインスタンス生成などをしたいと思います。

各テストの最後にはインスタンス破棄などの処理がしたいです。こういった場合に各テストの最初と最後に書くのではなく、デフォルトで用意されたメソッドで処理します。

PHPUnitでは以下4つのメソッドが用意されています。

 メソッド  実行タイミング
setUpBeforeClass テストクラスの最初
tearDownAfterClass テストクラスの最後
setUp 各テストの最初
tearDown 各テストの最後

setUpBeforeClass、tearDownAfterClassはstaticメソッドになります。また、戻り値の:voidを指定する必要があります。

protected function setUp():void
{
}
protected function tearDown():void
{
}
public static function setUpBeforeClass():void
{
}
public static function tearDownAfterClass():void
{
}

簡単なテストコードです。

GitHub - takahashi-h5/phpunit-sample01
Contribute to takahashi-h5/phpunit-sample01 development by creating an account on GitHub.

VS CodeのPHPUnitプラグインを使う

VS CodeのPHPUnitプラグインを使用してPHPUnitのテストをしてみます。

まずはプラグインをインストールします。

VSCode+ComposerでPHPUnit9.0を使う

インストールしたら、PHPUnitプラグインの説明ページが開きますので内容を読みます。

VSCode+ComposerでPHPUnit9.0を使う

Setupですが、環境変数でphp.exeにパスが通っている、composerでPHPUnitをインストールしている場合は設定不要のようです。

Dockerはここでは一旦割愛します。

How to Useを見ます。

Ctrl + Shift + pで、コマンドパレットが開きますので、「PHPUnit Test」を選択します。

この時、メソッドにカーソルをあてます。

VSCode+ComposerでPHPUnit9.0を使う

メソッドにカーソルをあてた状態で「PHPUnit Test」を選択すると、そのケースのみ実行されます。

クラス名にカーソルをあてた状態で「PHPUnit Test」を選択すると、そのテストクラスが実行されます。

カーソルをあてない状態で「PHPUnit Test」を選択すると、テストコードを選択することができます。

VSCode+ComposerでPHPUnit9.0を使う

全てのテストファイルを閉じた状態で「PHPUnit Test」を選択すると、phpunit.xmlに従ってテストが実行されます。

コメント

株式会社CONFRAGE ITソリューション事業部をもっと見る

今すぐ購読し、続きを読んで、すべてのアーカイブにアクセスしましょう。

続きを読む

タイトルとURLをコピーしました