15
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

updated at

composerでPHPUnitを使うための覚え書き (Mac)

導入手順

  • 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ファイルがプロジェクトディレクト内に作成されます。

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の記述がある。

php.ini
[xdebug]
#zend_extension="/Applications/MAMP/bin/php/php7.1.12/lib/php/extensions/no-debug-non-zts-xxxxxxxx/xdebug.so"

ここのコメントアウトを外して、下に記述を追加する。

php.ini
[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 phpusr/binが出力されているとMac標準のphpが実行されています。なので.bash_profileでPATHを変更してあげましょう。

.bash_profile
$ 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.xml
<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にコマンドを用意

composer.json
{
    "require-dev": {
        "phpunit/phpunit": "7.0.3",
    },
    "scripts": {
        "test": [
            "vendor/bin/phpunit --testsuite グループ名"
        ],
        "coverage": [
            "vendor/bin/phpunit --coverage-html カバレッジファイルの出力ディレクト名 test/実行テストファイル"
        ]
    }
}

ここまで

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
15
Help us understand the problem. What are the problem?