https://github.com/rspec/rspec/wiki/autotest
まずはRSpecとZenTestをインストールする。
% gem install rspec
% gem install ZenTest
~/.rspecに書いたRSpecの設定はこんなん。
# /.rspec
--format nested
--color
ファイル保存のタイミングでテストを実行してくれるようにautotest-fseventを、テスト結果をgrowlで通知してくれるようにautotest-growlを入れる。
% gem install autotest-fsevent autotest-growl
~/.autotestを作って、以下を書く。
# Include plugins
require 'autotest/fsevent'
require 'autotest/growl'
# Skip some paths
Autotest.add_hook :initialize do |autotest|
%w{.git .DS_Store ._* vendor}.each { |exception| autotest.add_exception(exception) }
false
end
プロジェクト毎の設定はプロジェクトのrootに./.autotestを作る。
# ./.autotest
Autotest.add_hook(:initialize) {|at|
at.add_exception %r{^\.git} # ignore Version Control System
at.add_exception %r{^./tmp} # ignore temp files, lest autotest will run again, and again...
# at.clear_mappings # take out the default (test/test*rb)
at.add_mapping(%r{^lib/.*\.rb$}) {|f, _|
Dir['spec/**/*_spec.rb']
}
nil
}
大体の設定は以上。
そして実際に使う。
ディレクトリ構造はこんな感じに。
テストファイルをspec下、テスト対象をlib下に置く。
hoge/
|-- autotest/
| `-- discover.rb
|-- lib/
| `-- hoge.rb
`-- spec/
`-- hoge_spec.rb
discover.rbには、rspec2を使う的なことを書いておく。
#./autotest/discover.rb
Autotest.add_discovery { "rspec2" }
あとは心の赴くままにテスト駆動すればいい。