LoginSignup
11
10

More than 5 years have passed since last update.

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

Last updated at Posted at 2014-08-03

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

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以外にもいろんなものに通知できる作りにすればよかったかなあ。
11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10