VimからPHPUnitを実行する方法をまとめました。PHPUnitをquickrunで非同期実行し、結果にグリーンレッドの色をつけるまでを紹介します。
動作確認環境
- Vim7.3
- quickrun0.5.1
- vimproc5.3
- PHP5.3.9
- PHPUnit3.6.7
目次
PHPUnitのインストール
私は下記を参考にPHPUnitをインストールしました。
http://docs.symfony.gr.jp/symfony2/contributing/code/tests.html
PHPのバージョンがPHPUnitに対応しており、PEARがインストールされていればうまくいくと思います。PHPUnitがうまくインストールできない場合はPEARを再インストールしましょう。
コマンドプロンプトからphpunit --versionと入力してバージョン情報が表示されればOKです。
quickrunのインストール
下記よりバージョン0.5.1をダウンロードします。
https://github.com/thinca/vim-quickrun/tags
bundle系プラグインを導入している場合は、ダウンロードして解凍したフォルダを下記に配置します。
- Windowsの場合は$HOME/vimfiles/bundle/
- Mac,Linuxの場合は$HOME/.vim/bundle/
vimprocのインストール
vimprocをインストールするとquickrunを非同期に実行することができるようになり、テスト実行中にVimがフリーズすることがなくなります。
quickrunの設定
.vimrcです。
augroup QuickRunPHPUnit
autocmd!
autocmd BufWinEnter,BufNewFile *Test.php set filetype=phpunit
augroup END
let g:quickrun_config = {}
let g:quickrun_config['_'] = {}
let g:quickrun_config['_']['runner'] = 'vimproc'
let g:quickrun_config['_']['runner/vimproc/updatetime'] = 100
let g:quickrun_config['phpunit'] = {}
let g:quickrun_config['phpunit']['outputter/buffer/split'] = 'vertical 35'
let g:quickrun_config['phpunit']['command'] = 'phpunit'
let g:quickrun_config['phpunit']['cmdopt'] = ''
let g:quickrun_config['phpunit']['exec'] = '%c %o %s'
runnerにvimprocを設定
phpunitを実行中にVimがフリーズしなくなります。
phpunitという新規filetypeを定義
*Test.phpの名前のファイルをphpunitというfiletypeに設定しています。PHPUnitのテストコードが書かれたファイルの名前はHogeClassTest.phpのように、Test.phpで終わらせる必要があります。
今回は.vimrcにfiletypeを追加する設定を書きましたが、新規のfiletypeを設定する方法は他にもいくつかあります。詳細は :help new-filetype をご確認ください。ftdetectを利用するのが良いと思います。
filetypeがphpunitの時のquickrunの動作を設定
quickrunのcommandをphpunitにします。オプションは必要に応じて設定してください。PHPUnitの結果は、常に右に、できるだけ小さく出したかったのでそのように設定しています。
quickrunからphpunitを実行する方法
PHPUnitで書かれたテストコードを開いて <Leader>r を入力することで実行できます。
テスト結果にグリーン、レッドの色をつける
quickrun経由でphpunitを実行した場合、--colorsオプションをつけてもOK, FAILURESの文字にグリーン、レッドの色がつきません。色がついていないと楽しくありませんし、フィードバックを早く得るためにも、結果に色がつくようにします。
テスト結果に色をつけるには、quickrunバッファ用のシンタックスを作成することで実現できました。シンタックスファイルの作成・記述方法は :help syntax :help usr_44 :help highlight あたりを参考にしました。
quickrun用のシンタックスファイルは $HOME/.vim/syntax/quickrun.vim に記述します。
以下、シンタックスファイルです。
if exists("b:current_syntax")
finish
endif
if !exists("main_syntax")
let main_syntax = 'quickrun'
endif
"大文字と小文字を区別する
syntax case match
"正規表現で一致
syntax match phpUnitOk /OK.*/
syntax match phpUnitFailures /FAILURES.*/
"group-nameをハイライトの指定と関連付け
highlight phpUnitOk term=reverse ctermbg=2 guibg=DarkGreen
highlight phpUnitFailures term=reverse ctermbg=4 guibg=DarkRed
"unlet b:current_syntax
let b:current_syntax = 'quickrun'
if main_syntax == 'quickrun'
unlet main_syntax
endif