いまどきの Ruby 書くときのテスト環境
romaji というライブラリを書いた。 - 寿司じゃないブログ という記事を書いたのだが、テスト環境について反応があったのでもうちょい詳しく書く。
RSpec
テスティングツールのデファクトスタンダード。
http://rspec.info/ に行くか、The RSpec Book を読もう。
Guard
ソースコードが編集されているかを監視して、変更があった場合に自動でテストを走らせてくれる。
guard と guard-rspec を gem install して、以下のようなファイルを Guardfile という名前でプロジェクトのルートディレクトリに置き、 guard コマンドを走らせると、watch で指定したファイルの変更の監視してくれる。
guard 'rspec', :version => 2, :all_after_pass => false, :all_on_start => false do
watch(%r{spec/.+_spec\.rb$})
watch(%r{lib/(.+)\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
watch(%r{lib/(.+)/.+\.rb$}) {|m| "spec/#{m[1]}_spec.rb"}
end
Growl がインストールされていて、ruby の growl gem が入っていたら、特に何もしなくてもテスト終了後に結果を Growl で通知してくれる。便利。
Travis CI
GitHub アカウントと連動して、GitHub のレポジトリに push したら勝手にビルドを走らせて通知してくれる。
GitHub アカウントでサインアップしたら、プロフィールページに GitHub に置いてるレポジトリ一覧が表示されるので CI に乗せたいレポジトリを指定する。あとは勝手に bundle install; bundle exec rake してテストを走らせてくれる。
Travis CI が強力なのは複数環境を指定してビルドしてくれるところで、例えば .travis.yml というファイルに以下のように書けば Ruby の 1.8.7、1.9.2、1.9.3 でそれぞれビルドしてくれる。
rvm: - 1.8.7 - 1.9.2 - 1.9.3