開発した WordPress プラグインなどを GitHub で公開しているなら、ローカルで PHPUnit テストをするのではなく、GitHub Actions でやりたい!ということはあるかもしれません。ただ、出来た!と思っても、GitHub側のシステム、 WordPress の本体バージョン、PHPのバージョン、MySQLのバージョンなどによって動かなくなることもあります。
そこで、GitHub Actions で WordPress の PHPUnit テストをする方法についてまとめページを作ろうと思いました。
ここでは、 WordPress の PHPUnit のテストが GitHub Actions で動くまでを書きます。2025年3月30日時点では、PHP7.4, 8.0〜8.4までのテストを対象にしています。
なお、ここでの作業のみでは GitHub Actions で WordPress の環境を作って、プラグインを有効化して致命的なエラーなく動作はするまでのテストができるということになります。
もし各プラグイン等でいろいろテストしたい場合の実装は PHP テストの作成(WordPress.org)を参考にしてみてください。
以下は下記の筆者の極めてシンプルなプラグイン(プラグインは WordPress が用意するショートコード一覧を表示する)をベースに説明していきます。
https://github.com/kimipooh/view-shortcodes
検証日:2025年3月30日
STEP 1. GitHub の環境を整える
STEP 2. PHPUnit をインストールする
こちらについても、ローカルではできているものとします。
WordPressでテスト駆動開発(PHPUnit)〜インストール編 | 【新潟】WordPressならminescope
や
https://phpunit.de/getting-started/phpunit-9.html
あたりを参考に Composer を使ったローカルでテスト環境を1つは作成してください。
とりあえず体験してみたい!という場合には、下記を参考にしてみてください。
このあたりがわからない場合
下記より PHPUnit 環境込みのプラグインデータをダウンロードして、
https://github.com/kimipooh/view-shortcodes
自分のプラグインフォルダへ
composer.json
phpunit.xml.dist
phpunit フォルダ
tests フォルダ
をコピーした上で、次に進んでください。
STEP 3. 必要なファイルを用意する
こちらのプラグインは WordPress が用意するショートコード一覧を表示するだけであり、特別なテストは不要です。WordPress 上でプラグインを有効化して致命的なエラーがでなければ良しとしています。
1) tests/bootstrap.php
require dirname( dirname( __FILE__ ) ) . '/view-shortcodes.php';
2) composer.json
"name": "kimipooh/view-shortcodes",
"description": "The plugin is for displaying active shortcodes in the admin main menu.",
を
"name": "ご自身のGitHubユーザー/自分のプラグインのメインファイル名",
"description": "自分のプラグインの説明",
に置き換える。
また "authors" にある、下記も変更してください。
"name": "自分の名前を入れる",
"email": "公開するメールアドレスを入れる"
3) .github/workflows/wordpress.yml(隠しファイル)
name: view-shortcodes plugin test
を
に置き換える。
補足説明
直感的にわかりにくいところの説明をします。
composer.json
上記は PHPUnit テストのどのバージョンを使うかを指定します。複数使いたい場合には || で区切ります。上記のケースでは、 9.5、10.5、11.5、12.0 のそれぞれ最新版を使うということです。11.5.13 などピンポイントで指定することもできます。
PHPUnit として使えるバージョンは、下記のサイトを確認してみてください。
また PHPUnitのバージョンによっては利用できる PHPバージョンも異なります。
こちらについては下記を参考にしてください。
https://phpunit.de/supported-versions.html
PHP7.4 や 8.0 をテストしたいなら、PHPUnit 9が必要
PHP8.1 なら PHPUnit 10を、PHP8.2 なら PHPUnit 11を、PHP8.3なら PHPUnit 12がサポートしています。ただし。サポートしていなくても動く場合もあります。PHP8.4 については PHPUnit 12で動作しました。
wordpress.yml
こちらについては GitHub Actions のワークフローファイルになります。
拡張子 yml のファイルを .github/workflows/ フォルダ以下にいれることで GitHub Actions で読み込まれます。
参考:GitHub Actions のクイックスタート - GitHub Docs
matrix: 以下にテストしたい PHP バージョンや WordPress バージョン、PHPUnit テストバージョンを列挙していくということになります。
こちらのテスト環境については、下記などを参照・利用しています。
https://github.com/shivammathur/setup-php
WordPress 5.4 や MySQL 5.6 や 8.0 などの条件分岐を設けていたりしますが、大きく分けて PHP 8.0 以上か、それ未満かで Composer の v1 か v2 のいずれを使うかが異なるのでその部分の条件分岐もいれています。
また WordPress のマルチサイトのテストも含めています。
STEP 4. GitHub へプラグインとPHPUnit テストをアップロードする
問題なければ下記のようにテストが成功します。
付録. エラー例
エラー例1)SVNコマンドが GitHub Actions が利用するOS (Ubuntu) から削除されていた
install_svn() {# Function to check if a command existscommand_exists() {command -v "$1" >/dev/null 2>&1}# Check if SVN is installedif command_exists svn; thenecho "SVN is already installed."elseecho "SVN is not installed. Installing SVN..."# Install SVNsudo apt-get install -y subversionfi}
エラー例2)PHP8.1 以降で Configuration.php on line 570 とでて GitHub Actionsが止まる
- 9.5の最新:PHP7.4と8.0用
- 10.5の最新:PHP8.1用
- 11.5の最新:PHP8.2用
- 12.0の最新:PHP8.3と8.4用