較新的 PHP 專案都會在 composer require_dev 自帶 phpunit,這個時候要執行 phpunit 都應該要使用專案中設定的 phpunit 版本:
$ cd /path/to/repository
$ vendor/bin/phpunit
若該專案沒有設定 phpunit 時,才使用系統上,或是 composer global 的 phpunit:
$ cd /path/to/repository
$ ~/.composer/vendor/bin/phpunit # or "phpunit" for system global
不過這實在有點麻煩,所以乾脆寫 script 處理掉:
phpunit() {
REPO_PHPUNIT=`pwd`"/vendor/bin/phpunit"
if [ -e $REPO_PHPUNIT ]; then
echo "... Run by vendor/bin/phpunit ..."
$REPO_PHPUNIT $*
else
~/.composer/vendor/bin/phpunit $*
fi
}
這樣一來,只要執行 phpunit 就會自動去檢查專案底下是否有 phpunit 可以用;若沒有則自動使用系統的 phpunit。
發現 bug
看來大家都沒仔細看 XD