#導入手順
- homebrewでcomposerをインストール
- composerでPHPUnitをインストール
- PHPUnitの設定
*便利かもと思い、composer・PHPUnit共に直接インストールでなく、homebrew,composerを利用しています。
#事前準備していたもの
- MAMP (PHPバージョンは7.1.12)
- homebrew (composerのインストール用)
#導入
##homebrewでcomposerをインストールする
インストールする前にhomebrewのアップデートの確認を念のため
$ brew update
composerのインストール
$ brew install composer
無事にインストールされたか確認
$ composer -v
こんなのが出力されればOK。
______
/ ____/___ ____ ___ ____ ____ ________ _____
/ / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/
/ /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ /
\____/\____/_/ /_/ /_/ .___/\____/____/\___/_/
/_/
Composer version 1.6.3 2018-01-31 16:28:17
#composerからPHPUnitをインストール
まずはターミナルからプロジェクトディレクトリへ移動
$ cd プロジェクトディレクトリ名
phpunitのインストール。--devオプションをつけて開発用でインストール。
$ composer require phpunit/phpunit --dev
バージョンは現時点での最新が自動で選ばれます。
インストールが成功するとcomposer.jsonファイルがプロジェクトディレクト内に作成されます。
{
"require-dev": {
"phpunit/phpunit": "^7.1"
}
}
PHPUnitもインストールできているか一応確認
$ vendor/bin/phpunit --version
これが出てくればOK
$ PHPUnit 7.1.2 by Sebastian Bergmann and contributors.
#PHPUnitの設定
xDebugを使えるようにする
xDebugはMAMPに標準で用意されている。でも、php.iniではコメントアウトされている。
###1. php.iniの設定
php.iniの場所は
/Application/MAMP/bin/php/使用しているPHPバージョン/conf/
コードの最後にxDebugの記述がある。
[xdebug]
#zend_extension="/Applications/MAMP/bin/php/php7.1.12/lib/php/extensions/no-debug-non-zts-xxxxxxxx/xdebug.so"
ここのコメントアウトを外して、下に記述を追加する。
[xdebug]
zend_extension="/Applications/MAMP/bin/php/php7.1.12/lib/php/extensions/no-debug-non-zts-xxxxxxxx/xdebug.so"
xdebug.coverage_enable=1
xdebug.default_enable=1
xdebug.profiler_enable=1
xdebug.profiler_output_dir="/tmp"
xdebug.remote_autostart=1
xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000
* "no-debug-non-zts-xxxxxxxx"のxxxxxxxx部分は各々の環境で違うと思うのでコピペ注意です。php.iniを確認してください。
###2. apacheを再起動
ここでハマったのが、localhost内でphpinfo()を出力して確認するとxDebugが有効になっているのにも関わらず、コマンドラインではxDebugが有効になっていない。
これは、コマンドライン上ではMAMPのphpにPATHが通っておらず、Macに標準インストールされているphpが実行されていたのが原因でした。
which php
でusr/bin
が出力されているとMac標準のphpが実行されています。なので**.bash_profile**でPATHを変更してあげましょう。
$ export PATH=/Applications/MAMP/bin/php/使用しているバージョン/bin:$PATH
.bash_profileの再読み込み
$ source .bash_profile
これでもう一度、which php
で確認。/Applications/MAMP/bin/php/使用しているバージョン/bin/php
が出ればOK。
phpunit.xmlの用意
- autoload.phpの事前読み込み
- 複数テストの実行
- カバレッジファイルの生成
<phpunit bootstrap="vendor/autoload.php">
<filter>
<whitelist processUncoveredFilesFromWhitelist="true">
<directory suffix=".php">テストディレクトリ</directory>
</whitelist>
</filter>
<testsuites>
<testsuite name="まとめて実行したいテストのグループ名">
<directory>テストディレクトリ</directory>
</testsuite>
</testsuites>
</phpunit>
###composer.jsonにコマンドを用意
{
"require-dev": {
"phpunit/phpunit": "7.0.3",
},
"scripts": {
"test": [
"vendor/bin/phpunit --testsuite グループ名"
],
"coverage": [
"vendor/bin/phpunit --coverage-html カバレッジファイルの出力ディレクト名 test/実行テストファイル"
]
}
}
ここまで