最近、PHPでクラスを使ったプログラムを書いたりする機会が増えたため、ユニットテストの導入を行った。
そこで、今回は実際にPHPユニットテストをサイトに導入したやり方をメモとして残しておく。
基本、この記事だけで完結するが、Wordpressの関数などを使う場合はさらなる設定が必要になるが、そうでない場合は続きの記事も読んでもらいたい。
今回使用するのはPHPUnitだ。
前提条件として、PCにComposerをインストールしておいてもらいたい。
Table of Contents
① コマンドラインでテーマディレクトリへ移動
今回はWPディレクトリのテーマ内にて導入を行う。
繰り返しになるが、今回はWPの関数を使わない前提で構築していく。
「PowerShell / terminal」を開き、下記を入力
cd C:\Users\project\public\wp-content\themes\project-theme② composer初期化
下記を入力し、ほぼ Enter連打でOK。
composer init成功すると、「composer.json」が生成される。
③ PHPUnitインストール
下記を入力
composer require --dev phpunit/phpunitインストール後、「vendor/」と「composer.lock」ファイルが生成される。
④ テストフォルダ作成
テーマ直下にtestsディレクトリを自身で作る
theme-project
│
├ vendor
├ tests
│ └ SampleTest.php
├ composer.json⑤ テストファイル作成
テストとして動かすプログラムをSampleTest.phpとしてtestsディレクトリの中に作成する。
<?php
use PHPUnit\Framework\TestCase;
class SampleTest extends TestCase
{
public function testExample()
{
$this->assertTrue(true);
}
}
⑥ PHPUnit設定
テーマ直下に「phpunit.xml」を作成し、下記を入れる
<?xml version="1.0" encoding="UTF-8"?>
<phpunit bootstrap="vendor/autoload.php">
<testsuites>
<testsuite name="Theme Test Suite">
<!-- ~~Test.php で終わるファイルだけテスト実行 -->
<directory suffix="Test.php">tests</directory>
</testsuite>
</testsuites>
</phpunit>⑦ テスト実行
テーマディレクトリで下記のコマンドを実行
vendor/bin/phpunit成功すると、コマンドライン上に下記が表示される。
PHPUnit 10.x
.1 / 1 (100%)
OK (1 test, 1 assertion)⑧ 最終構成
これでPHPUnitの作成は完了となり、最終的なファイル群は下記となる。
theme-project
│
├ composer.json
├ composer.lock
├ phpunit.xml
├ vendor
│
├ tests
└ SampleTest.php冒頭でも書いた通り、WPを使っていないサイトであればこれで動くはずだ。
しかし、ワードプレスサイトとなるとオリジナルの関数などがPHPUnitで処理できず、エラーとなってしまう。
次回はこれをさらにWordPress向けに改良し、WPクエリなどでも動かせる仕様にしていきたいと思う。