プロジェクトでphp7.3、fuelphp1.8.2を使っています。
しかし、phpunitのバージョンが5.6と古く、もうすぐサポートが切れてしまうためバージョンアップした際に出たエラーの解決について書いていきます。
前提
バージョンアップが完了しているわけではありません。
怒られたので、それの解決方法だけです。
もしかしたら、別の方法があるかもしれないので、その場合は是非コメントお願いします。
やったこと
本当はdocker内でコマンド叩いていますが、長くなってしまうので必要なところだけ抜粋します。
phpunitのバージョンアップに伴って依存パッケージの更新も必要だったため更新しています。
./composer.phar remove phpunit/dbunit
./composer.phar remove phpunit/phpunit
./composer.phar remove phpunit/php-timer
./composer.phar require --dev phpunit/phpunit ^8.5.2
./composer.phar require --dev phpunit/php-timer ^2.1.2
./composer.phar require --dev kornrunner/dbunit
上のコマンドを入れ終わった後、testを実行すると、エラーが発生する。
5.6の時はこれで実行できていました。
$ php oil test
Uncaught exception Oil\Exception: 0 - PHPUnit does not appear to be installed.
Please visit https://phpunit.de and install. in /省略/fuel/packages/oil/classes/command.php on line 189
Callstack:
#0 省略/oil(68): Oil\Command::init(Array)
#1 {main}
解決方法
公式サイトの方にバージョンの確認方法載っていたので、それで確認。
バージョンアップは問題なくされている。
https://phpunit.de/getting-started/phpunit-8.html
$ ./vendor/bin/phpunit --version
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.
今までとパスが変わった?みたいです。
改めて、公式に沿って実行します。
$ ./fuel/vendor/bin/phpunit --bootstrap fuel/vendor/autoload.php ./fuel/app/tests
PHPUnit 8.5.2 by Sebastian Bergmann and contributors.
Time: 150 ms, Memory: 4.00 MB
No tests executed!
一旦、タイトルのエラーが出なくなりました。
ただ、テストが一つも実行されていません。
ファイルを指定せずにテストを実行する場合には、ファイル名を *Test.php
としないといけないようです。。
これ全ファイルに適用するの結構たいへん。。
1ファイルだけ変更したところ、正しく実行されました。(エラーが出ている状態)
Using tests instead of tests/EmailTest would instruct the PHPUnit command-line test runner to execute all tests found declared in *Test.php sourcecode files in the tests directory.
まとめ
バージョンアップを始めた直後にphpunit9のリリースがされたため、これからアップデートをする方はそちらへのアップデートを検討されると良いかと思います。