PHP
PHPUnit

PHPUnitの実行結果をGrowlに通知する方法

More than 3 years have passed since last update.

を作ったという話(宣伝)。

phpunit-growlprinter.png

なお、他の方法としては、Stagehand_TestRunnerや、Rubyのwatchr、guard、Nodeのgruntやglupもあります。

これらの方法とは以下のような違いがあります


  • GNTPもPHPで実装しているので、growlnotifyコマンドなどは不要

  • 通知しかしない。ファイルの更新の監視してテストを自動実行するような機能は無い

(2015/9/13)

このようなツールのためにcomposer.jsonを書き換えるのはイマイチのような気がしたので、pharで導入できるようにしました。


使い方


PHAR


  • Githubのリリースからpharファイルをダウンロードしてください。


  • phpunitのbootstrapファイルを新たに作ります。既に他にbootstrapファイルがある場合はこのファイルからrequireしてください。



bootstrap_growl.php

<?php

require_once "phpunit-growlprinter.phar";
// require_once "bootstrap.php";


  • bootstrapとprinterClassを指定して実行します。

$ phpunit --bootstrap=bootstrap_growl.php --printer=iakio\\phpunit\\GrowlPrinter


Composer


インストール

composerでインストールしてください。


composer.json

{

"require-dev": {
"iakio/phpunit-growlprinter": "*"
}
}

PHPUnit自体はcomposerでインストールしたものでもphar版phpunitでも大丈夫なはずです。但し現状、PHPStormのPHPUnitから使う場合は問題があるようです。PHPStormのRUN/Debug ConfigurationでPHPUnitではなくPHP Scriptとして動かすことはできます。


設定ファイルで設定する場合


phpunit.xml.dist

<phpunit printerClass="iakio\phpunit\GrowlPrinter"

printerFile="src\iakio\phpunit\GrowlPrinter.php">
...
</phpunit>

autoloaderでprinterClassを見つけられる環境であれば、printerFileは不要なはずです。例えばcomposerでインストールしたphpunitであれば不要です。phar版phpunitを使っているのであれば、bootstrapファイルでautoloaderを指定してあれば問題ないでしょう。

あと、このphpunit.xml.distをTravisとかに持っていくとマズいので、phpunit.xmlで設定して.gitignoreしておくのが正解かもしれません。


コマンドライン引数で設定する場合

$ vendor/bin/phpunit --printer=iakio\\phpunit\\GrowlPrinter

以上です。


その他


  • 設定とかないので、通知先のホストなどを変えたいときは23053番ポートをポートフォワードするか、GrowlPrinterクラスをオーバーライドしてください(README参照)。

  • 私はMacを持ってないので、Growl for Windowsでしか動作確認していません。Macでも動いたよとか教えていただけると嬉しいです。

  • Growl以外にもいろんなものに通知できる作りにすればよかったかなあ。