元々、XAMPPにはphpunitがバンドルされているのだが、Pear版の古いバージョンである(PHPUnit-1.3.2とPHPUnit-2.3.6)ため、最新のphpunitでユニットテストを行う場合、改めてインストールする必要がある。phpunitは昨年にpear版の提供を廃止しており、現在はphar版のみを提供しているので、phar版をインストールすることになる。
今回は、このXAMPPへのphpunit最新版のインストールと、実際のユニットテストの実行までをまとめてみようと思う。
1. XAMPPバンドル版のphpunitのアンインストール
XAMPPの最新安定板は2015年11月6日時点で、バージョン5.6.14となっている(日本語公式サイト)。そして、phpunitの最新版では稼働環境にPHPバージョンの5.6以上を要求されるので、必然的にXAMPPはPHP5.6系がバンドルされている5.6.x系をインストールする必要がある。
今回はXAMPPのインストールは省略して、インストールされたXAMPPからバンドルされているphpunitをアンインストールするところから始める。
まず、XAMPPをインストールしたら一番最初にやっておくと良いのだが、PHPやMySQLといったバンドルモジュールの実行パスをWindowsの環境変数に追加しておくと、コマンドラインからの作業が非常に楽になる。ということで、小ネタ的にWindowsでの環境変数のパス追加のやり方を書いておく。ちなみに、XAMPPのインストールパスはC:\xampp
である。
> $Env:Path += ";c:\xampp\php;c:\xampp\mysql\bin"
> echo $Env:Path
※ 私はPowerShell使いなので、基本的にこの後のコマンドラインの記述はPowerShellでのやり方になってるのでご注意をば。なお、Windowsのコマンドプロンプトからだと、
> setx /M Path "%Path%;c:\xampp\php;c:\xampp\mysql\bin"
──とのこと。(参照: コマンドプロンプトからの環境変数Pathへのパス追加方法)
これで、いつでもどこでもphp
とmysql
コマンドが利用できるようになっていい感じ(今回、mysql
コマンドは関係ないけど)。
閑話休題、phpunitのアンインストールに戻る。XAMPPバンドル版はPearモジュールとしてインストールされているので、Pearコマンドでアンインストールをするところからだ。
> pear uninstall phpunit
uninstall ok: channel://pear.php.net/PHPUnit-1.3.2
> pear uninstall phpunit2
uninstall ok: channel://pear.php.net/PHPUnit2-2.3.6
これで、バンドル版PHPUnitのアンインストールは完了。一応、Pearのキャッシュもクリアしておくと万全。
> pear clear-cache
2. 最新版phpunitのインストール
ここからは、GUIメインでの操作。
まず、最新版の phpunit.phar をダウンロード。https://phar.phpunit.de/にアクセスして、最新バージョンのphpunitをダウンロードするか、下記のリンクからでもダウンロード可能。
※ 2015年11月6日時点の最新バージョンは5.0.8。
次に、ダウンロードした.phar
ファイルをXAMPPのPHP実行パス(C:\xampp\php\
)直下へコピーする。
コピーできたら、同じフォルダ内にphpunitのバッチファイルを作る。ファイルの新規作成でphpunit.cmd
もしくはphpunit.bat
というテキストファイルを作って、下記の内容を記述する。
@php "%~dp0phpunit.phar" %*
※ PowerShellからバッチファイルをechoで生成するとファイルにBOMが付与されて、実行できなくなるので、GUI側から作成するのが一番手っ取り早い。
ここまでできたら、晴れてPowerShellかコマンドプロンプトから、
> phpunit --version
PHPUnit 5.0.8 by Sebastian Bergmann and contributors.
──とバージョンを確認してみる。バージョン番号が表示されればインストール完了だ。
3. ユニットテストの実行
あとは、phpunitの実行設定ファイル「phpunit.xml」が存在しているパスでphpunit
のコマンドを実行するだけで、ユニットテストができるようになる…(この仕様が汎用的に正しいのかはまだわかっていないが…)。
なお、phpunit.xml
の設定の仕方とか、実際のユニットテストコードの書き方とかは、まだ勉強中なので、習得できたらまた記事にしようかと思う(早速、自作したテストコード走らせたらFatalエラー出たので…(笑))。
──というわけで、今回はここまで。