autotestを使う

autotest?

Rubyでテストを書くからには使うといいよと言われたもの。起動しておくと、テストコードやプロダクトコードの変更を検知して、テストを自動実行してくれるらしい。調べて使えるようにしてみた。さらに、テスト結果を画面ポップアップするようにもしてみた。結構便利そう。

autotestのインストール

今回参考にしたのは下記のサイト。

autotestのインストール

autotestはZenTestというパッケージに入っているので、gemからZenTestをインストールする。

$ gem install ZenTest
autotest-railsのインストール

railsでautotestを実行するためのプラグインもインストールする。

$ gem install autotest-rails
autotestを使って、railsプロジェクト内のrspecを実行する

railsプロジェクトルートディレクトリに移動して、autotestコマンドを実行するとテストが実行される。テスト結果がコンソールに表示されればおk。

$ cd path_to_your_rails_project_root
$ autotest
autotestを止める

autotestの実行を止めるには、Ctrl-cを2回実行する必要がある。

テスト結果を画面にポップアップ表示する

autotestを実行中にRubyファイルを変更すると、テストが実行されてコンソールに結果が表示されるが、エディタでコードを変更した後にコンソールを開いて結果を見るのはめんどうだなと思ったので、テスト結果をポップアップで通知できないかなと調べてみた。以下は、Ubuntuでの例。

Ubuntuに通知ライブラリをインストールする

UbuntuGnomeを使っている場合、libnotify-binというのが必要らしいので入れる。

$ sudo apt-get install libnotify-bin
test_notifierをインストールする
$ gem install test_notifier
autotestの設定ファイルに、通知プラグインの設定を追加する

autotestの設定ファイルは、.autotestである。railsプロジェクトルートディレクトリの直下に置くと有効になる。そこに、通知プラグインとテストを実行した時刻を表示するプラグインを記述する。

$ vim path_to_your_rails_project_root/.autotest

.autotest

require "test_notifier/runner/autotest"
require "autotest/timestamp"
autotestを実行する

autotestを再度実行すると、ポップアップでテスト結果が表示される。

その他の通知方法

screenを使っている人は、テスト結果をscreenのステータスバーにも表示できるらしい。
興味のある方は、下記のサイトを参考にどうぞ。