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