All Articles

TestemでPHPUnitのテストをする話

PHPでも気軽にテストを回したい

リハビリも兼ねてちょろっとPHPを書いたりしてるんですがCI(CodeIgniterではなく)というか、テストをぶん回すのにいい方法がないかなーって思ってたのでメモ。 今まではtest.shみたいなシェルスクリプトでやってたんですが面倒になってきたのです。このへん、誰か思いつきそうな感じでしたがググっても出てこなかった。

Testem

nodeで動くテスト・ツールですね。インストールとか詳しくは下記をどうぞ。nodeとかnpmとかが必要です。

JavaScriptのテストツール「testem」が素晴らしいぞ - Mach3.laBlog

私もJavaScriptの開発に時々使ってますが、PHPでも使えないかなーって思いまして。 Enterでテスト走らせたりできるので楽ですね。Gruntでwatchすればいいじゃんってのは置いておいて。

phpunitのインストール

Composerで入れてみました。

// composer.json
{
    "require-dev": {
        "phpunit/phpunit": "4.1.*"
    }
}
$ php composer.phar install

vendor/以下に入りました。あとはtestem.jsonにこんな感じに記述。

testem.json
{
    "launchers": {
        "phpunit": {
            "command": "vendor/bin/phpunit --tap --colors --bootstrap [bootstrapなファイル] [テストしたいディレクトリ/ファイル]",
            "protocol": "tap"
        }
    },
    "launch_in_dev": [
        "phpunit"
    ]
}

ポイントはTAPプロトコルで標準出力する、ですね。--colorオプションはいらないかも。あとは実行するだけ。

$ testem

phpunitのテストが走りました。

Vimとかターミナルで開発してる人には楽かもしれなくて、実際僕はすごい楽だと思います。 多分CLIのテストツールは同じように設定できるので、Rubyとか他の言語も同様にCLIテストが実行できると思います。

まとめ

PHPのビルトインサーバと組み合わせてlocalhost:7357の表示に使えないかなーって思うんですが試してません(CLIで十分でした)。 もともとはnodeのツールですが、こういう便利なものは他の言語環境でも使っていきたいですね。

簡単ですが、現場からは以上です。