VimからPHPUnitを実行する環境を整える

2012年2月1日

Vim

VimからPHPUnitを実行する方法をまとめました。PHPUnitをquickrunで非同期実行し、結果にグリーンレッドの色をつけるまでを紹介します。

動作確認環境

  • Vim7.3
  • quickrun0.5.1
  • vimproc5.3
  • PHP5.3.9
  • PHPUnit3.6.7

目次

  1. PHPUnitのインストール
  2. quickrunのインストール
  3. vimprocのインストール
  4. quickrunの設定
  5. テスト結果にグリーン、レッドの色をつける

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

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

-技術ブログ
-