最近、PHPでクラスを使ったプログラムを書いたりする機会が増えたため、ユニットテストの導入を行った。
そこで、今回は実際にPHPユニットテストをサイトに導入したやり方をメモとして残しておく。
基本、この記事だけで完結するが、Wordpressの関数などを使う場合はさらなる設定が必要になるが、そうでない場合は続きの記事も読んでもらいたい。
今回使用するのはPHPUnitだ。
前提条件として、PCにComposerをインストールしておいてもらいたい。
最近、PHPでクラスを使ったプログラムを書いたりする機会が増えたため、ユニットテストの導入を行った。
そこで、今回は実際にPHPユニットテストをサイトに導入したやり方をメモとして残しておく。
基本、この記事だけで完結するが、Wordpressの関数などを使う場合はさらなる設定が必要になるが、そうでない場合は続きの記事も読んでもらいたい。
今回使用するのはPHPUnitだ。
前提条件として、PCにComposerをインストールしておいてもらいたい。
Table of Contents
今回はWPディレクトリのテーマ内にて導入を行う。
繰り返しになるが、今回はWPの関数を使わない前提で構築していく。
「PowerShell / terminal」を開き、下記を入力
cd C:\Users\project\public\wp-content\themes\project-theme下記を入力し、ほぼ Enter連打でOK。
composer init成功すると、「composer.json」が生成される。
下記を入力
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.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クエリなどでも動かせる仕様にしていきたいと思う。
Laravelのeditフォームだけselectのバリデーションエラーになる原因と解決方法
Laravel マイグレーション命名規則とカラム操作コマンド一覧【コピペOK】