ほげほげ見聞録

技術メモ、備忘録、使い方はそのうち覚える

FuelPHPのプロジェクトにPHPUnitをインストール

FuelPHP(v1.8)を使用しているプロジェクトにPHPUnitを導入するメモ。
そんな昔のフレームワーク使ってんのとか言ってはいけない

PHPUnitのバージョン

テスト実行にはFuelPHPのoilを使用するのだが、PHPUnitのバージョンが新しいとNull 合体演算子「??」でoilがエラー出すのでPHPUnit6使用。

PHPUnit6からクラス名が変更になっている。
PHPUnit_Framework_TestCase」→「PHPUnit\Framework\TestCase」
Release Announcement for Version 6 of PHPUnit – The PHP Testing Framework

なので、以下のファイル中の該当クラス名を変更する必要あり。

  • fuel/core/classes/testcase.php
  • fuel/packages/oil/classes/command.php

テスト実行

既にローカル環境にPHPUnitがある場合はそれらが優先されてしまうようだ。
今回はxamppのバンドルがあったので、テスト実行すると「No tests executed!」になってしまった。
xamppのPHPUnitディレクトリを移動させるとテスト成功。

グローバルインストールしていない場合は、以下のエラーが出てしまう。
「'phpunit' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。」

この場合、oilに対してPHPUnit がインストールされている場所を知らせる必要がある。
app/config/oil.php作成し、コメントの設定参照しながらパスを通す。

余談:オプションなしでテスト実行

php oil test」を実行すると、以下エラー。
issueにも上がっていたが、PHPのバージョンの問題らしい?
--groupや--testsuiteなどオプションありだとエラーは出ない。普段はオプション付きで実行するので、実用での問題はなさそう。

Compile Error - Cannot use PHPUnit\Framework\Exception as Exception because the name is already in use in fuel/vendor/phpunit/phpunit/src/Framework/Constraint/TraversableContains.php on line 12」