Railsチュートリアルで行うテストでは、Gemのminitestとminitest-reportersを使います。
私の環境はWindows11で、ローカルで作業をしています。プロンプトはコマンドプロンプトを使っています。
- OS: windows11
- prompt: cmd
- Rails
- Gem: minitest
- Gem: minitest-reporters
minitest-reportersを使えば、Green/Redがわかりやすくなっていいのですが、私の環境ではプログレスバーの表示がおかしくなっていました。
本来1つであるプログレスバーがGreen/Redにかかわらず、テストの個数に応じて複数表示されてしまいます。
たぶんこんな表示になるはず。
5/10[=====.....]
^ ここだけが進んでいくはず。
私の環境でのプログレスバー
1/10[=.........]
2/10[==........]
3/10[===.......]
4/10[====......]
5/10[=====.....]
プログレスバーがいっぱい出てくる。
あまりこのような現象になることはないかもしれませんが、私が行った対策を記します。
minitest-reportersの設定
test/test_helper.rbにminitest-reportersの設定を書いていると思います。
そこにMinitest::Reporters::DefaultReporter.newを追記しました。
# 修正前
require "minitest/reporters"
Minitest::Reporters.use!
# 修正後
require "minitest/reporters"
Minitest::Reporters.use! Minitest::Reporters::DefaultReporter.new
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
↑ ここを追記
結論としてはこれでプログレスバーが複数出ることはなく、見やすい表示になりました。
他にもいろいろ
test_helper.rbのMinitest::Reporters.use!の後に、
Minitest::Reporters::DefaultReporter.newを付ければ表示方法を変えてくれるようですが、
Minitest::Reporters::DefaultReporter
.newのDefaultReporterの箇所は他にもあるようです。
- DefaultReporter
- SpecReporter
- ProgressReporter
- RubyMateReporter
- RubyMineReporter
- MeanTimeReporter
- JUnitReporter
自分にあったものを探してみると面白そうです。
おわり
これで一画面にテスト結果が表示されるようになりました。テストがより楽しくなりますね。
私の目的は複数表示されてしまうプログレスバーを何とかすることなのでこれ以上深入りはしていませんが、下記のリンクではさらに詳しく書かれていますので参考になさってください。
下記のように複数指定することも可能とのことです。
Minitest::Reporters.use! [Minitest::Reporters::SpecReporter.new, Minitest::Reporters::JUnitReporter.new]
ブロックでの設定も可能なようです。
Minitest::Reporters.use!(
Minitest::Reporters::DefaultReporter.new,
ENV,
Minitest.backtrace_filter
)
細かい設定はしておりませんし、英語のサイトをなんとなしに読んだ結果なので、間違いがあるかもしれません。
お気づきの点がありましたらコメント等でご指摘いただければ幸いです。