私はPHPUnitを依存関係に組み込むのが嫌なので、PHPUnitのインストールはComposerを使わずにPHIVEを使ってPHARをダウンロードすることで行っています。
PHIVEの基本的なことについては下記の記事を読むとわかると思います。
PHAR版のPHPUnitの困ること
PHAR版のPHPUnitを使うと依存関係を汚さなくて済むのですが、困ることもあります。
それはテストコードを書く際にIntelephenseでassertEquals
等のメソッドがエラーになったり、コード補完が効かなかったりすることです。
これらはIntelephenseがPHARファイルを読み込んでくれないことに起因します。
assertEquals
メソッドが存在しないというエラーが出ます。
解決方法
解決方法は至極単純で、PHARを展開して中に含まれるPHPファイルを取り出すことです。
PHARを展開してプロジェクトディレクトリ配下のどこかに置けば、それをIntelephenseが読み込んでくれるようになり、エラーが消えてコード補完も効くようになります。
下記のようなコードを書いて実行すればPHARを展開できます。
<?php
$phar = new Phar('.phive/phars/phpunit-9.5.4.phar');
$phar->extractTo('tools-src');
上記のコードではPHPUnitのPHARをtools-src
ディレクトリに展開しています。
展開後にテストコードを開くとassertEquals
メソッドのエラーが消えました。
コード補完も効くようになりました。
おまけ
PHARを展開するためのコマンドを作って公開しています。
特定のPHARを展開するだけでなく、ディレクトリに含まれるPHARを一括で展開したり、PHIVEのphars.xml
に記載されているPHARを一括で展開したりできます。