こんな方に
- Vagrant+VirtualBoxなどを使って開発している
- Netbeansからphpunitを仮想マシン上で実行したい、カバレッジもみたい
- コマンド叩いてテスト実行するの面倒
利用上の注意点
- 開発環境はMacOS向けです(スクリプト内のパスの設定を変更すればwindowsでも使えるとは思いますが未検証)
- 仮想マシンはCentOS等のlinux向けです(これもスクリプト内のパスの設定を変更すれば使えるとは思いますが未検証)
- 開発環境にもphpは必要(sshも)です、phpunitは不要です
- Netbeansでもっと簡単にできるよ!というのがあれば是非教えてください
仕組み
簡単にですが仕組みについて記載します。
Netbeansに関する記載は憶測や調査した内容を含みます。
誤りがあればご指摘いただけると大変うれしいです。
通常、Netbeansではphpunitを実行する際にNetbeansへの設定を参照しコマンドへ渡す引数を生成します。
最終的に出来上がる引数の例としては、以下のようになります。
※Netbeansの設定状況に応じて変化します。
"/Users/liberty/.phpbrew/php/php-5.5.16/bin/php"
"/Users/liberty/works/virtual_machines/vm1/crawler/vendor/bin/phpunit"
"--colors"
"--log-junit"
"/var/folders/wv/cld1sfzd05z2w50smpbmss3m0000gn/T/nb-phpunit-log.xml"
"--bootstrap" "/Users/liberty/works/virtual_machines/vm1/crawler/bootstrap/autoload.php"
"--configuration"
"/Users/liberty/works/virtual_machines/vm1/crawler/phpunit.xml"
"--coverage-clover"
"/var/folders/wv/cld1sfzd05z2w50smpbmss3m0000gn/T/nb-phpunit-coverage.xml"
"--filter"
"%\btestGet\b%"
"/Applications/NetBeans/NetBeans 8.0.1.app/Contents/Resources/NetBeans/php/phpunit/NetBeansSuite.php"
"--run=/Users/liberty/works/virtual_machines/vm1/crawler/app/tests/app/models/ImpTest.php"
実際に実行されるコマンドを簡略化すると以下の通りです。
php phpunit {other_arguments}
つまり、引数をリモートの環境に合わせてあげればよいのです。
本スクリプト内の処理内容については以下の通りです。
- 引数をリモート環境に合う形へ文字列を置き換える
- NetbeansSuite.phpをリモートへ配置する
- 置き換えた文字列をリモートのphpに渡して実行する
- 実行結果のログファイル(nb-phpunit-log.xml,nb-phpunit-coverage.xmlを取得する)
スクリプト
とりあえず作ったものなので最新のソースは以下のリポジトリにおいてあります。
随時リファクタリングするかもしれないので利用する際はgithubのソースを取得して下さい。
https://github.com/LibertyDevs/phpunit-remote
配置場所はどこでも良いです。
使い方
- ダウンロードしたスクリプトの user configuration に囲まれている箇所を変更します。
- ダウンロードしたスクリプトをNetbeansへ設定します
- [プロジェクト]を右クリック
- [カテゴリ内のphpunit]をクリック
- [カスタムPHPUnitスクリプトの使用]のみチェックをいれてダウンロードしたスクリプトを指定
- いつも通りテスト実行