Visual Studio Code を使ってローカルで WordPress プラグイン の PHPUnit を実行してみよう

WordPress plugin を PHPUnit でテストするためには、
WordPress, PHPUnit のインストールの他に Subversion 、
そして MySQL 等のデータベースが必要になります

この環境構築には時間がかかります。
この記事では Visual Studio Code と Docker Desktop を利用して
環境構築の手順をスキップします。

なお、Visual Studio Code 以外のエディター・IDE を使いたい場合は
Docker のみを使って PHPUnit を実行することもできます。

ローカルでの PHPUnit 実行方法

手順

1. Visual Studio Code と Docker Desktop をインストールします

ダウンロードはこちらです。

2. ファイル共有の設定を行います

WordPress plugin のプロジェクトディレクトリーを
コンテナーにマウントするために、ファイル共有の設定を行います。
これを行わないと、エラーが発生します。

Docker Desktop の Settings 開きます
Docker Desktop の Settings 開きます
WordPress plugin のプロジェクトを配置しているドライブのファイル共有を有効にします
WordPress plugin のプロジェクトを配置しているドライブのファイル共有を有効にします

参考: Installation [Developing inside a Container using Visual Studio Code Remote Development]

3. リポジトリーをクローンまたはダウンロードします
git clone https://github.com/yukihiko-shinoda/docker-compose-phpunit-wordpress-plugin.git
4. ルートディレクトリーで Visual Studio Code を開きます

クローンしたディレクトリーに移動し、Visual Studio Code を起動します。

Windows の GUI を使う場合は次のように操作します:

フォルダーの余白を右クリック → [Open with Code] をクリック

フォルダーの余白を右クリック → [Open with Code] をクリック
フォルダーの余白を右クリック → [Open with Code] をクリック
5. Remote Development 拡張機能をインストールします

Visual Studio Code が起動したら、
拡張機能の推奨に関する通知ダイアログが表示されます。

[Install All] ボタンをクリックします。(その他の通知は一旦放置します。)

拡張機能の推奨に関する通知ダイアログの [Install All] ボタンをクリック
拡張機能の推奨に関する通知ダイアログの [Install All] ボタンをクリック
6. 環境変数を設定します

拡張機能のインストールが完了したら、.env ファイルを作成します:

.env ファイルを作成します
.env ファイルを作成します

すると、.env ファイルがタブで開くので、
PATH_TO_INDIVIDUAL_PLUGIN_DIRECTORY キーを設定します。
値は WordPress plugin のプロジェクトのディレクトリーを指すようにします。

例:

PATH_TO_INDIVIDUAL_PLUGIN_DIRECTORY=../plugins/staticpress2019

そして、ファイルを保存します。

.env ファイルを編集して保存します
.env ファイルを編集して保存します
7. 環境を起動します

左下隅のクイックアクションステータスバーの項目をクリックし、
[Remote-Containers: Reopen in Container] をクリックします。

環境を起動します
環境を起動します
8. workspace を開きます

[Open Workspace] ボタンをクリック

[Open Workspace] ボタンをクリック
[Open Workspace] ボタンをクリック

すると、WordPress plugin のプロジェクトファイルや
WordPress のライブラリーを参照できるようになります。
PHP ファイルを開くとコードの解析が始まります。

workspace を開いた状態
workspace を開いた状態

コードの解析が終わったら、PHP のコードに正しい警告が表示されます。

それでは、ターミナルを開きましょう。

[View] → [Terminal] をクリック
[View] → [Terminal] をクリック

そうしたら、PHPUnit や PHP_CodeSniffer が実行できます。

"phpunit" または "phpcs" と入力して Enter キー
“phpunit” または “phpcs” と入力して Enter キー

次のように入力します:

phpunit

または:

phpcs

そして Enter キーを入力すると、結果が表示されます。

PHPUnit の実行結果
PHPUnit の実行結果

トラブルシューティング

環境の起動に失敗します

再起動の前に、データベースコンテナーを削除する必要があります。

docker stop database && docker rm database

これは、
WordPress plugin のテスト環境設定用 shell script に冪等性がないことに
起因します。

レガシーな環境のテストはどうやったらいいの?

.env ファイルに次のキーを追加します。

  • DOCKER_IMAGE_PHPUNIT
  • MYSQL_VERSION

例:

DOCKER_IMAGE_PHPUNIT=futureys/phpunit-wordpress-plugin:4.3.22-php7.1.33-apache-buster
MYSQL_VERSION=5.6

レガシー環境用のイメージは
Docker Hubのリポジトリー: futureys/phpunit-wordpress-plugin
から選択できます。

もし必要なタグのイメージがなければ、
GitHub の Issues から筆者に注文してください。

注文の際は、次の内容を教えてください:

  • どの WordPress のバージョンでテストしたいのか
  • どの PHP のバージョンでテストしたいのか
  • (もしわかれば) どの MySQL バージョンであれば、
    そのレガシー環境の WordPress が動作するか
  • どの WordPress plugin の開発に使いたいか

イメージはマトリックス・ビルドで作成しているので、
開発・ビルドにかかる時間やコストの観点から、
できるだけイメージの種類を減らしたいためです。

PHPUnit や PHP_CodeSniffer がうまく動作しません

WordPress plugin のプロジェクトを既に初期化しましたか?
初期化された WordPress plugin のプロジェクトには
次のファイルが含まれているはずです:

  • .phpcs.xml.dist
  • bin/install-wp-tests.sh
  • phpunit.xml.dist
  • tests/bootstrap.php

もしこれらのファイルが存在しない場合は
まず WordPress プラグインの初期化 を行いましょう。

クィック・リファレンス

参考: Developing inside a Container using Visual Studio Code Remote Development

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