ZenTestでRSpecを自動実行できるようにした

[Ruby][備忘録]ZenTestでRSpecを自動実行できるようにした

あらすじ

ZenTestを使えばテストを*specファイルを変更したタイミングで実行できるという事を知った。

ファイル編集する -> alt+tabでウィンドウ切り替える -> プロンプトでrspecコマンドうつ…の繰り返しとはなんだったのか……。

参考サイト

環境

  • Windows XP
  • 導入済み
    • Ruby 1.8.7
    • Rspec 2.5
    • Rubygems バージョン失念

手順

ZenTest導入

まずはZenTestをgemで導入……しようと思ったらgem自体のアップデートを要求された。

gem update --system

アップした後はgem 1.8.10となった。gemを最新にしたらZenTestを導入。

gem install ZenTest

次にソースファイルを用意。Growlで何かしら通知するファイルを作りたかったのでそんな感じの名前に。

growl_for_ruby
┣.autotest
┣autotest
┃┗discover.rb
┣growl.rb    # 実際にソースをゴリゴリ書いていく
┗spec
 ┗growl_spec.rb # テストコード

.autotest

これにはまだ何も書いていない。設定を書いていくらしい。

autotest/discover.rb

autotestコマンド実行時にautotestフォルダに入っているdiscover.rbを読みに行くようだ。中身は以下。

Autotest.add_discovery { "rspec2" }

autotestでrspec 2.Xを使うよってことかな。

spec/growl_spec.rb

テストコード。rspecの書き方にならってテストを書いていく。注意しないといけないのは、テストコードはspecフォルダ以下に入れないと読み込んでくれない。[1]

テスト実行

一つ新しいプロンプトを開き、プロジェクトルートへ移動。そしてautotest実行。

$ autotest
loading autotest/rspec2
C:\ruby1.8\bin\ruby -rrubygems -S C:/ruby1.8/lib/ruby/gems/1.8/gems/rspec-core-2.5.1/bin/rspec --tty 'C:/xx/growl_for_ruby/spec/growl_spec.rb'

成功すると待ち状態になり。以後はコードを保存する毎? にrspecコマンドが走ってくれる!

その他

どうもRubyのPATHにスペースが入っているとLoad Errorとなる様子。またお前か。ここでもデフォルトパスでインストールした弊害が……。

と、もう一つ。autotestの他にrspecにautospecというコマンドがあるらしく、こちらを叩いてもOK”だった”らしい。今は以下のようなメッセージが出る。訳は http://d.hatena.ne.jp/smellman/20110310/1299727933:title に記載されています。

************************************************************
REMOVAL NOTICE: you are using behaviour that has been
removed from rspec-2.

 * The 'autospec' command is no longer supported.
 * Please use 'autotest' insted.

This message will be removed from a future version of rspec.
************************************************************

今後の予定

  • 動作原理をもう少し調べる
  • rspecにオプションをつけて実行したい
  • テスト結果をGrowlで通知したい

[1] ただし、どこかの設定で場所は変えられると書いてあった気がする。

関連記事(この記事の初版より古い記事はリンクがグレーで表示されます)

  1. 2011/12/27 [Evernote] [Ruby] [API] EvernoteのAPIをRubyから叩きたい
  2. 2011/12/26 [Ruby] [Haml] [Sinatra] SinatraでHaml入門
  3. 2011/12/21 [Ruby] Ruby実行時のオプションをよろしく解析してくれるoptparseを使ってみる
  4. 2011/12/15 [Ruby] [Solaris] [Redmine] RedmineとApacheを連携させるPassengerをインストールできなかった
  5. 2011/12/05 [Ruby] [Redmine] RedmineでプラグインインストールしたらTemplateErrorが出た
  6. 2011/12/04 [Ruby] [Mac] [Unix] 複数のRuby環境の管理・切替ができるrvmをインストールした
  7. 2011/11/30 [Ruby] [Heroku] rvm環境でRuby実行時にReadlineエラーが起きた時の対処法
  8. 2011/11/29 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった 解決編
  9. 2011/11/28 [Ruby] pikでインストールしたRubyでbundle exec rubyしたらエラーになった
  10. 2011/11/27 [Ruby] [Heroku] [Lokka] LokkaをインストールしてHerokuにデプロイした
  11. 2011/11/26 [Ruby] [Sinatra] [Heroku] HerokuにWebアプリ(Sinatra)をデプロイする手順をまとめた
  12. 2011/11/24 [Ruby] 複数のRuby環境の管理・切替ができるpikを実行できた nyaos編
  13. 2011/10/04 [Ruby] 複数のRuby環境の管理・切替ができるpikを実行できた
  14. 2011/10/03 [Ruby] Rubyのgemバージョン管理ができるBundlerを実行できなかった
  15. 2011/09/30 [Java] [Windows] [Ruby] .msgファイルをパースして中から添付ファイルを抜き出す