JenkinsでPHPUnitを実行してコードカバレッジを試した。

これの続きです

Seleniumだけでは内部のclassを細かくテストできないので、PHPUnitでテストしようと思って、設定してみました。
もともと、/lib/ディレクトリにはclassを入れて、/test/ ディレクトリにはクラスファイルに対するテストファイルを置いています。

参考にしたのはこのサイトです。

準備と書かれたxdebugのインストールを忘れ、Jenkinsのプラグインのチェックだけしちゃったところで
ビルド実行したものだからエラーが出ちゃいました。

phpunit --log-junit reports/unitreport.xml \
--coverage-html reports/coverage \
--coverage-clover reports/coverage/coverage.xml \
./test/test_lib_*.php

このワイルドカードによる複数ファイル指定はできなかったので、続き書きました。2011/10/27追記

これを実行したらこんなエラー。

The Xdebug extension is not loaded.
Build step 'シェルの実行' marked build as failure
Publishing Clover coverage report...
No Clover report will be published due to a Build Failure
Finished: FAILURE

最初、Xdebugのインストールが分からなかったので、yum list *xdebug* などやってしまいましたが、
PECLで入るという事が分かりました。

http://www.doyouphp.jp/tips/tips_xdebug.shtml
xdebugの参考にしたサイトです。

# pecl install xdebug
 
----
Build process completed successfully
Installing '/usr/lib/php/modules/xdebug.so'
install ok: channel://pecl.php.net/xdebug-2.1.2
configuration option "php_ini" is not set to php.ini location
You should add "extension=xdebug.so" to php.ini

出力を端折りましたが、php.iniにextensionを書いて追加しろとのこと。

# php -i |fgrep -i extension
extension_dir => /usr/lib/php/modules => /usr/lib/php/modules

って出たので、書かなくてもいいかな?と思ったら書かねば使えませんでした。

PHP Warning:  Xdebug MUST be loaded as a Zend extension in Unknown on line 0

また、このようなメッセージが出てしまったので、調べると、php.ini に書くのはこのようにすべきとのこと。

zend_extension=/usr/lib/php/modules/xdebug.so

僕のコマンドラインでのテストファイル指定は致命的なものがあるんだけれど、別の投稿にします。
PHPUnitのコードカバレッジを使うにはxdebugが必要という事をまとめました。