読者です 読者をやめる 読者になる 読者になる

Rubyのtest-unitで自動でテスト実行を行う

RSpec時代は rspec-guard を使ってテストの自動実行を行なっていましたが、test-unitではどういう選択肢があるのか調べて見ました。

guard, guard-minitest(NG)

かつてはguardのプラグインであるguard-minitest を利用すればtest-unitでも動作していたようです。

エラー内容

–guard オプションなんてないよと怒られます。

17:35:22 - INFO - Running: all tests
invalid option: --guard

以下のような引数でテストを実行しているようでした。

ruby -I"test" -I"spec" -r bundler/setup -r minitest/autorun -r ./test/test_crawler.rb -e "" -- --guard

実装は以下で行なっているのですが、これがminitest用のコードのものなのか?直すのであればどうすべきか?そもそもこのgemに対してtest-unitの修正を入れて良いのかさっぱり分からなかったので、一旦対応するのはやめて他のgemを探すことにしました。
guard-minitest/runner.rb at v2.4.6 · guard/guard-minitest

watchr(NG)

mynyml/watchr: Modern continuous testing (flexible alternative to Autotest)
その昔、少しだけ利用したことがありましたが、現在はメンテされておらず、エラーが出ます。
uninitialized constant Module::Config (NameError) · Issue #57 · mynyml/watchr
ここでobservrが紹介されています。

observr(OK)

今現在はこれを利用。
kevinburke/observr: Run tests, compile markdown/SCSS/etc, when a file changes
Watchrとほぼ同じような感じで利用できます。

利用方法

test.watchr みたいなファイルを用意。

watch( "test/test_.*\.rb" )  {|md| system("ruby #{md[0]}") }
watch( "lib/(.*)\.rb" )      {|md| system("ruby test/test_#{md[1]}.rb") }
$ bundle exec observr test.watchr