PHPUnitのインストール for Mac ~追記あり~
前回アジャイルサムライを読んだのですが、
V: アジャイルなプログラミング
の章で
ユニットテスト:動くことがわかる
というのがあったんですね。(p235)
つまり、アジャイル開発ではテストコードを書く必要があるよと。
そんなわけで早速テストコードを書くために、PHPUnitをインストールしました!!
が、これがかなり手こずったので覚書として。
ちなみにPHPUnitですがpearのライブラリの一部で、コードを書くとコマンドラインでテストが出来るという優れもの。
というわけでインストールするまでを以下に示します。
参考はこちら PHPUnitのインストール
pearにphpunitを認識させる
次のコマンドを使います。
pear channel-discover pear.phpunit.de
するとpearがphpunitという存在を知ることができます。
しかし自分がやった時には ~ failed のような感じのものが出てしまいうまくいきませんでした。
実際にでたエラーはこちら
Discovering channel pear.phpunit.de over http:// failed with message: channel-add: temp_dir is not writable: "/private/tmp/pear/temp" - You can change this location with "pear config-set temp_dir"
Trying to discover channel pear.phpunit.de over https:// instead
Discovery of channel "pear.phpunit.de" failed (channel-add: temp_dir is not writable: "/private/tmp/pear/temp" - You can change this location with "pear config-set temp_dir")
なぜかよくわからなかったのでググってみるとどうやらユーザー権限が違う模様。
それでpearのあるディレクトリで
ls -l
としたところ
drwxr-xr-x 3 root wheel 102 9 5 11:50 pear
のようなものが現れました。つまりroot権限でないとここにいろいろ手を加えられないと。
なのでルート権限で実行してみました。
sudo pear channel-discover pear.phpunit.de
すると
Adding Channel "pear.phpunit.de" succeeded
Discovery of channel "pear.phpunit.de" succeeded
とでたので無事成功。
pearにPHPUnitをインストールする。
次は
pear install phpunit/PHPUnit
としてインストールしようとしました。
またしてもエラーが出てしまうので同様に
sudo pear install phpunit/PHPUnit
とルート権限で実行すると
追記
これで実行してください
sudo pear install -a phpunit/PHPUnit
~省略~
install ok: channel://pear.phpunit.de/File_Iterator-1.3.1
install ok: channel://pear.phpunit.de/Text_Template-1.1.1
install ok: channel://pear.phpunit.de/PHP_Timer-1.0.2
install ok: channel://pear.symfony-project.com/YAML-1.0.6
install ok: channel://pear.phpunit.de/PHP_TokenStream-1.1.3
install ok: channel://pear.phpunit.de/PHP_CodeCoverage-1.1.3
install ok: channel://pear.phpunit.de/PHPUnit_MockObject-1.1.1
install ok: channel://pear.phpunit.de/PHPUnit-3.6.12
と出たので無事成功と!!
phpunitのバージョンを確認する
で最後にバージョンの確認ですが、
phpunit
を実行すると次のようなものが現れました。
Warning: require_once(File/Iterator/Autoload.php): failed to open stream: No such file or directory in /usr/lib/php/pear/PHPUnit/Autoload.php on line 45
Fatal error: require_once(): Failed opening required 'File/Iterator/Autoload.php' (include_path='.:') in /usr/lib/php/pear/PHPUnit/Autoload.php on line 45
どうやらAutoload.phpの45行目がなんか変だよということなのですが、そんなこと言われても…という感じでした。
でディレクトリを/usr/lib/php/pear/PHPUnit/に移動してみたらどうだろう?
と思い、
移動して実行したところ、
/usr/lib/php/
の段階でうまくいきました。
原因や理由はさっぱりですけど。
phpunit
を実行したところ。
PHPUnit 3.6.12 by Sebastian Bergmann.
Usage: phpunit [switches] UnitTest [UnitTest.php]
phpunit [switches]
~省略~
となりました。バージョンは3.6.12ですね。
という感じで結構苦戦したので同じエラーが出てしまって出来ないという人は参考に!!
使い心地なんかはいつか書きます。
ではでは
追記
上記の原因ですが、単純にPATHが通ってないだけですね。
インストールのところで
sudo pear install -a phpunit/PHPUnit
とすることでPATHが通り実行出来るようになります。
理由はPATHかどうなのかは不明ですが…